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

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

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 + (*сцепление строк*) '''%''');


Наверх

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