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

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

Access не воспринимает запрос [D7]


Denis ©   (2005-08-10 10:54:00) 

Пытаюсь работать с базой Access 2000 с помощью компонентов ADO.
Попытка выполнить простейший запрос на вставку в таблицу из Delphi
вызывает ошибку "Неправильный синтаксис инструкции INSERT INTO",
но этот же запрос, выполненный в Access, нагло и молча добавляет запись в таблицу.
Думал, дело в счетчике, убрал его - та же петрушка.
Подскажите, в чем может быть дело.
Таблица из трех полей - числовое(уже не счетчик) и два текстовых.
Вот как выглядит запрос:
INSERT INTO [USER] (iduser,usname,phone)
values (1,'я','555')

Пытался еще так -
INSERT INTO [USER]
select 1 as iduser,'я' as usname, '555' as phone


Paul_K   (2005-08-10 12:54:00) [1]

после
Memo1.Lines.assign(Tb.SQL);
напиши
showmessage(Tb.SQL.TEXT)
и посомотри что исполняешь


ANB   (2005-08-10 12:45:00) [2]

Порекомендовал бы вообще то параметры юзать, вместо строк в кавычках и чисел - констант.

А по сабжу - может провайдер не тот ? Я в них не особо разбираюсь, запости строку коннекта - ща мастера придут, разберут.

Кстати, возможна проблема в кавычках. Замени константы в запросе на параметры и поиграй с квадратными строками.


Denis   (2005-08-10 12:21:00) [3]

Я в Memo вывожу текст запроса для проверки, потом копирую его без изменений в Access - и шуршит как миленький.
Ну вот как запрос формируется:
сразу скажу - Edit-ы гарантированно не пустые.

Tb:=TAdoQuery.Create(self);
Tb.Connection:=fmMain.Connection;
Tb.SQL.Add('SELECT USER.* FROM [USER] WHERE (((USER.USNAME)= '+#39+edUser.Text+#39+'))');
Tb.Open;
if not Tb.IsEmpty
then
MessageDlg('Пользователь с таким именем уже зарегестрирован!',mtWarning,[mbOk],0)
else
begin
Tb.Close;
Tb.SQL.Clear;
Tb.SQL.Add('select max(IDUSER) as IDUSER from [USER]');
Tb.Open;
Tb.FieldList.Update;
IDUS:=Tb.Fields[0].AsInteger+1;
Tb.Close;
Tb.SQL.Clear;
Tb.SQL.Add('INSERT INTO [USER] (iduser,usname,phone) ');
Tb.SQL.Add('values ('+IntTOStr(IDUS)+','+ #39+edUser.Text+#39+','+#39+edNew.Text+#39+')');
Memo1.Lines.assign(Tb.SQL);
Tb.ExecSQL;
MessageDlg('Новый пользователь успешно добавлен!',mtWarning,[mbOk],0);
Close;
end;
Tb.Free;


ANB   (2005-08-10 12:14:00) [4]


> Denis ©   (10.08.05 10:54)
- в 17 строке ошибка.


Наверх

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