Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как учесть поле-счётчик в SQL запросе?


Ral'f ©   (2007-06-16 11:19:00) 

Добавля новую запись в таблицу "Kontakt" Access:
 if ADOQueryCB.Active then ADOQueryCB.Close;
 ADOQueryCB.Parameters.Clear;
 ADOQueryCB.SQL.Add('INSERT INTO Kontakt (FIO, Telefon) VALUES (:fio, :tel)');
 ADOQueryCB.Parameters.ParamValues['fio'] := LabeledEditFIO.Text;
 ADOQueryCB.Parameters.ParamValues['tel'] := LabeledEditTel.Text;
 ADOQueryCB.ExecSQL;
 ADOQueryCB.Close;

Появляется сообщение:
"Ошибка синтаксиса, пропущен оператор 1"
Может проблема в том, что первая колонка в моей таблице - счётчик? Но он же сам должен заполнять поле - "Num"! или нет?

Подскажите, пожалуйста, - как учесть счётчик в своём запросе?


Anatoly Podgoretsky   (2007-06-16 12:50:00) [1]

> Ral'f  (16.06.2007 12:48:08)  [8]

Не надо про него читать, про него надо забыть.


Ral'f   (2007-06-16 12:48:00) [2]

как этот костыль работатет

- действительно! Где можно почитать именно про костыль?
(НЕ про SQL запросы, не про компоненты, а  - когда (что) нужно открывать, очищать, закрывать)


Ral'f   (2007-06-16 12:44:00) [3]

Спасибо!
с "ADOQueryCB.SQL.Text := " всё заработало!


Anatoly Podgoretsky   (2007-06-16 11:53:00) [4]

У него написано, зато не понимает как этот костыль работатет.


G_M_S   (2007-06-16 11:39:00) [5]


> ADOQueryCB.SQL.Add('INSERT INTO Kontakt (FIO, Telefon) VALUES
> (:fio, :tel)');

Если мне не изменяет память, перед этим надо писать:

ADOQueryCB.SQL.Close;


sniknik   (2007-06-16 11:30:00) [6]

а с чего ты решил что проблема в неучтенности счетчика? если оно прямо пишет что ошибка синтаксиса...

хотя, на самом деле ошибка конечно не в синтаксисе, это уже последствия, ошибка в том, что используются компоненты "подпорки" вместо "родных". столько лишних действий в коде, а нужное забыл... (тоже лишнее, для "родных"), догадайся что...

а по правильному то же самое гораздо проще
with ADOCommand do begin
 CommandText:= 'INSERT INTO Kontakt (FIO,Telefon) VALUES (:fio,:tel)';
 Parameters.ParamByName('fio').Value:= LabeledEditFIO.Text;
 Parameters.ParamByName('tel').Value:= LabeledEditTel.Text;
 Execute;
end;


Anatoly Podgoretsky   (2007-06-16 11:29:00) [7]

Что написано, то и пиши.
И еще, выкинь ты нафиг этот костыль под названием AdoQuery и используй прямой компонент AdoCommand


Ral'f   (2007-06-16 11:25:00) [8]

Да, смешно!
Но что писать в INSERT?
Kontakt ( Num, FIO   ---> VALUES ( '', :fio
???


Anatoly Podgoretsky   (2007-06-16 11:22:00) [9]

// ADOQueryCB.Parameters.Clear;
ADOQueryCB.SQL.Text := запрос


Наверх

Титульная страница Поиск, карта сайта Написать письмо