Форум: "Базы";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
ВнизSQL-запрос с параметрами выдает ошибки Найти похожие ветки
← →
kyn66 © (2006-04-25 13:34) [0]Уважаемые мастера, никак не могу победить запрос с параметрами. Делая разные вариации - вылетают разные ошибки. Мне нужно сделать запрс с 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
Как правильно сформировать строку запроса в зависимости от разных ситуаций?
← →
Sergey13 © (2006-04-25 13:40) [1]ShowMessage(SQL.Text) вставь и наблюдай что за запрос ты сформировал.
Например с FamEdit.Text = "" запрос будет
SELECT * FROM Kv WHERE
← →
Johnmen © (2006-04-25 13:40) [2]SQL.Add(" Fam LIKE :tFam + (*сцепление строк*) """%""");
← →
kyn66 © (2006-04-25 13:48) [3]>>Например с FamEdit.Text = "" запрос будет
>>SELECT * FROM Kv WHERE
Не совсем понятно???
>>Johnmen
Со сцеплением тоже не проходит. ADS видно не принимает двойные кавычки, для не го строка это -"СТРОКА", а не "Строка"
← →
Johnmen © (2006-04-25 13:57) [4]
> kyn66 © (25.04.06 13:48) [3]
> Со сцеплением тоже не проходит. ADS видно не принимает двойные
> кавычки,
А это не двойные. Это сдублированные одинарные.
← →
evvcom © (2006-04-25 13:58) [5]
> SQL-запрос с параметрами выдает ошибки
А текст ошибки, видимо, военная тайна. Я так предполагаю, что ошибка типа того, что параметров не находит. Это означает всего навсего, что после формирования текста запроса надо дать команду распарсить запрос. Попробуй выполнить Query.Prepare перед обращением к параметрам.
← →
evvcom © (2006-04-25 13:59) [6]Кстати, а что такое ADS?
← →
sniknik © (2006-04-25 14: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;
← →
sniknik © (2006-04-25 14:04) [8]> Кстати, а что такое ADS?
адвантаже датабесе сервер (вроде так), еще один sql серверный/локальный движок работает с dbf но основной формат свой собственный.
← →
kyn66 © (2006-04-25 14:34) [9]>evvcom
Текст ошибки представлен в самом начале. См[1]
← →
kyn66 © (2006-04-25 14:39) [10]>> sniknik
Ай , спасибо!!! Заработало! Все делов в кавычках было !!!! Спасибо!
← →
sniknik © (2006-04-25 15:04) [11]> Все делов в кавычках было !!!!
не только, просто столкнулся ты только с этим, посмотри где ты значение параметру задаеш и где я, и что будет если FamEdit.Text будет = "", и к чему будет WHERE в запросе "прицеплено".
← →
Dummes (2006-04-25 18:14) [12]//Читаемость получше!!!
case SovpCheckBox.Checked do
begin
true: SQL.Add(" Fam = :tFam");
false: SQL.Add(" Fam LIKE :tFam%");
end;
← →
Плохиш © (2006-04-25 18:36) [13]
> Dummes (25.04.06 18:14) [12]
Сам-то понял, какие кнопки надавил?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c