Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2008, 11:55   #1
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
Вопрос помогите разобраться

Здравствуйте! Помогите пожалусто . вопрос на самом деле (мне почему то кажеться) легкий....
Я использую БД Акцессовскую, делфи7. При обнавлении базы я должна обнавить существующие записи и добавить новые.
но вот сложность возникает при переходе к инсерту...
т.е. при обработке блока if происходит пошаговое сравнение данных ... и если табель <> табелю из БД ...то естественно возникает ошибка : вставка записи... т.к. табель - д/б уникальным
Код:
 DataModule1.ADOQuery3.First;// в ADOQuery3 данные о 
табелях
   while not DataModule1.ADOQuery3.Eof do
         begin
// далее идет блок сравнения на совпадения табелей
If (StrToInt(Edit8.Text)=DataModule1.ADOQuery3.Fields.Fields[1].AsInteger)  then
            begin
DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('update sotrudniky set adress='+ QuotedStr(Edit11.Text)+',data_roz ='+ QuotedStr(Edit7.Text)+',fio=' + QuotedStr(Edit6.Text) + ',UNN='+ QuotedStr(Edit9.Text)+',data_vidachi='+ QuotedStr(Edit10.Text)+',vidan='+ QuotedStr(Edit12.Text)+',seria='+ QuotedStr(Edit13.Text)+',ctaz_v_ap='+ QuotedStr(Edit14.Text)+'  where tab_nam = '+DataModule1.ADOQuery3.Fields.Fields[1].AsString+'');
DataModule1.ADOQuery1.ExecSQL;
 end 
/// вот тут я пытаюсь вставить записи которых нету в базе ... но переход не правильный :(
else begin
    DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('insert into sotrudniky (adress,data_roz,fio,UNN,data_vidachi,vidan,seria,ctaz_v_ap,tab_nam) values('+ QuotedStr(Edit11.Text)+','+ QuotedStr(Edit7.Text)+',' + QuotedStr(Edit6.Text) + ','+ QuotedStr(Edit9.Text)+','+ QuotedStr(Edit10.Text)+','+ QuotedStr(Edit12.Text)+','+ QuotedStr(Edit13.Text)+','+ QuotedStr(Edit14.Text)+','+ QuotedStr(Edit8.Text)+')');//ctaz_v_ap='+ QuotedStr(Edit14.Text)+'  where tab_nam = '+DataModule1.ADOQuery3.Fields.Fields[1].AsString+'');
DataModule1.ADOQuery1.ExecSQL;
  end;
DataModule1.ADOQuery3.Next;
  end;
Tanuska___:) вне форума Ответить с цитированием
Старый 04.09.2008, 14:56   #2
Rollingstone
Новичок
Джуниор
 
Регистрация: 04.09.2008
Сообщений: 1
По умолчанию

Tanuska___

Насколько, я понял tab_nam должен быть уникальным, так и
сделай его таким в базе, и ещё ключевым, и ещё чтоб приращение какое-нибудь поле имело.

И попробуй убрать вставку значения tab_nam из запроса 'insert into sotrudniky'.
т.е.
DataModule1.ADOQuery1.SQL.Add('inse rt into sotrudniky (adress,data_roz,fio,UNN,data_vidac hi,vidan,seria,ctaz_v_ap) values('+ QuotedStr(Edit11.Text)+','+ QuotedStr(Edit7.Text)+',' + QuotedStr(Edit6.Text) + ','+ QuotedStr(Edit9.Text)+','+ QuotedStr(Edit10.Text)+','+ QuotedStr(Edit12.Text)+','+ QuotedStr(Edit13.Text)+','+ QuotedStr(Edit14.Text)+','+ QuotedStr(Edit8.Text)+')');//ctaz_v_ap='+ QuotedStr(Edit14.Text));
Rollingstone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с С++ igroman Общие вопросы C/C++ 1 03.08.2008 23:15
Помогите разобраться! SerSasha Помощь студентам 4 09.06.2008 10:00
Помогите разобраться Proof БД в Delphi 13 19.05.2008 10:59
Помогите разобраться! Кот Microsoft Office Excel 3 14.08.2007 19:48