![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 строке ошибка.