|
#1
|
|||
|
|||
ADOQuery
Всем доброго времни суток!
Появилась проблемка... Необходимо добавить 1 запись в существующцю таблицу. Вот оработчик кнопки для добавления строки в таблицу ... Обработчик ADOQuery1.Active := false; ADOQuery1.Clear; ADOQuery1.SQL.Add('INSERT INTO table_test (f_1, f_2, f_3) VALUES ("111111", "222222", "333333")'); ADOQuery1.ExecSQL; 1. Типы всех полей - varchar (not null) 2. Значения как только не указывал ... и в апастрофах, и в ковычках, и в скобочках квадрытных, и просто значение ... 3. Выдает всегда одну и туже ошибку ... ---- Ошибка (дословно): Имя "111111", "222222", "333333" не разрешено в данном контексте. Допустимым значениями являются константы, константные вырожения и (в некоторых случаях) переменные. ----- Примечание: Нашел вариант указывать в тройных апастрофах, т.е. не "111111", а '''111111'''. Работает... но что-то мне подсказывает, что не так это пишется ... ----- По форуму искал аналогичные темы, но так ничего похожего не нашел ... Может кто-нибудь дать короткое описание решения данной проблемы ? Как необходимо указывать значения в скобочке после слова VALUES ? Может кто-нибудь скинуть ссылку на нормыльный справочник с синтаксисом всех запросов MS SQL ? Заранее благодарю за помощь ... |
#2
|
||||
|
||||
QuotedStr('111111') можно
|
#3
|
|||
|
|||
Нашел решение одно еще ...
Указывать в двойных апострофах, тогда тоже работает ... т.е. ' ' [значение] ' ' Может у кого есть еще соображения ? |
#4
|
|||
|
|||
1. Строка в SQL задается в апострофах.
2. Одиночный апостроф в паскалевской строке вводится через 2 подряд вводимых апострофа. Таким образом, твой запрос должен иметь вид: Код:
ADOQuery1.SQL.Add('INSERT INTO table_test (f_1, f_2, f_3) VALUES (''111111'', ''222222'', ''333333'')'); А вообще, пиши запросы через параметры. |
#5
|
|||
|
|||
Спасибо за исчерпывающий ответ ...
|
#6
|
|||
|
|||
Вопрос... почему выдаёт только одно слово в мемо??? хотя их должно быть много.
если меняю Fields[0] на Fields[1] выдаёт ошибку... не понимаю, объясните пожалуйста. Код:
procedure TfMain.Button1Click(Sender: TObject); var lostS,f: string; begin Memo1.Clear; lostS:=Edit1.Text; f:=lostS; begin with fMain.ADOQuery1 do begin Close; SQL.Clear; SQL.Add('SELECT Name'); SQL.Add('FROM WORDS'); SQL.Add(Format('WHERE Name LIKE %s',[QuotedStr('%'+f+'%')])); Open; Memo1.Lines.Add(fMain.ADOQuery1.Fields[0].AsString) end; end; end; |