![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL-запрос с параметрами выдает ошибки [D7, ADS ]
kyn66 © (2006-04-25 13:34:00)Уважаемые мастера, никак не могу победить запрос с параметрами. Делая разные вариации - вылетают разные ошибки. Мне нужно сделать запрс с LIKEи без него. Вот что делаю:
With KvQuery do
begin
SQL.Clear;
SQL.Add('SELECT * FROM Kv');
SQL.Add(' WHERE');
if FamEdit.Text <> '' then
begin
if SovpCheckBox.Checked then
SQL.Add(' Fam = :tFam')
else
SQL.Add(' Fam LIKE :tFam%');
end;
end;
Params[0].AsString := AnsiUpperCase(FamEdit.Text);
При таком коде выдается вот такая ошибка:
http://yurec66.narod.ru/vopr1.jpg
Как правильно сформировать строку запроса в зависимости от разных ситуаций?
Плохиш (2006-04-25 18:36:00) [1]
> Dummes (25.04.06 18:14) [12]
Сам-то понял, какие кнопки надавил?
Dummes (2006-04-25 18:14:00) [2]//Читаемость получше!!!
case SovpCheckBox.Checked do
begin
true: SQL.Add(' Fam = :tFam');
false: SQL.Add(' Fam LIKE :tFam%');
end;
sniknik (2006-04-25 15:04:00) [3]> Все делов в кавычках было !!!!
не только, просто столкнулся ты только с этим, посмотри где ты значение параметру задаеш и где я, и что будет если FamEdit.Text будет = '', и к чему будет WHERE в запросе "прицеплено".
kyn66 (2006-04-25 14:39:00) [4]>> sniknik
Ай , спасибо!!! Заработало! Все делов в кавычках было !!!! Спасибо!
kyn66 (2006-04-25 14:34:00) [5]>evvcom
Текст ошибки представлен в самом начале. См[1]
sniknik (2006-04-25 14:04:00) [6]> Кстати, а что такое ADS?
адвантаже датабесе сервер (вроде так), еще один sql серверный/локальный движок работает с dbf но основной формат свой собственный.
sniknik (2006-04-25 14:00:00) [7]> Как правильно сформировать строку запроса в зависимости от разных ситуаций?
With KvQuery do begin
SQL.Clear;
SQL.Add('SELECT * FROM Kv');
if FamEdit.Text <> '' then begin
if SovpCheckBox.Checked then SQL.Add('WHERE Fam = :tFam')
else SQL.Add('WHERE Fam LIKE :tFam+''%''');
Params[0].AsString := AnsiUpperCase(FamEdit.Text);
end;
Open;
end;
evvcom (2006-04-25 13:59:00) [8]Кстати, а что такое ADS?
evvcom (2006-04-25 13:58:00) [9]
> SQL-запрос с параметрами выдает ошибки
А текст ошибки, видимо, военная тайна. Я так предполагаю, что ошибка типа того, что параметров не находит. Это означает всего навсего, что после формирования текста запроса надо дать команду распарсить запрос. Попробуй выполнить Query.Prepare перед обращением к параметрам.
Johnmen (2006-04-25 13:57:00) [10]
> kyn66 © (25.04.06 13:48) [3]
> Со сцеплением тоже не проходит. ADS видно не принимает двойные
> кавычки,
А это не двойные. Это сдублированные одинарные.
kyn66 (2006-04-25 13:48:00) [11]>>Например с FamEdit.Text = '' запрос будет
>>SELECT * FROM Kv WHERE
Не совсем понятно???
>>Johnmen
Со сцеплением тоже не проходит. ADS видно не принимает двойные кавычки, для не го строка это -'СТРОКА', а не "Строка"
Sergey13 (2006-04-25 13:40:00) [12]ShowMessage(SQL.Text) вставь и наблюдай что за запрос ты сформировал.
Например с FamEdit.Text = '' запрос будет
SELECT * FROM Kv WHERE
Johnmen (2006-04-25 13:40:00) [13]SQL.Add(' Fam LIKE :tFam + (*сцепление строк*) '''%''');