![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с запросом [D6, IB6.x]
NoName © (2004-01-27 03:50:00)
Доброй ночи!
Помогите решить проблему: вовремя выполнения запроса
возникает ошибка Dinamic SQL error.SQL error code = -206
Column unknown "введеный мной символ и знак %".
Вот код:
Find.CLose;
Find.SQL.Clear;
Find.SQL.Add("select * from new");
Find.SQl.Add("where name like ""+edit1.Text+"%"");
Find.Open;
ПОчемуто раньше когда я писал такой код все было отлично теперь же Delphi на это материться :(
В консоли InterBase код:
select * from new
where name like "а%";
выводит мне все имена на букву а.
Мучаюсь но не как не могу убрать этот баг.
ПОМОГИТЕ найти решение.
Зарание спасибо!
NoName (2004-01-27 06:38:00) [1]
Cпасибо большое за помощь
ЮЮ (2004-01-27 06:08:00) [2]
1 способ: ЮЮ © (27.01.04 04:18) [3]
Find.SQl.Add("where name like """+edit1.Text+"%""");
(везде стоит символ ")
2 способ
Find.SQl.Add("where name like " + QuatedStr(edit1.Text + "%"));
3 способ
Find.SQl.Add("where name like :NameParam");
...
Find.ParamByName(NameParam).asString := edit1.Text + "%";
И т.д. и т.п. (предпочтительней использовать в обратной последовательности: 3, 2, 1(самый худший вариант)
NoName (2004-01-27 05:51:00) [3]
и как это реализовать программно в Delphi ?
что - то у меня это не выходит :(((
ЮЮ (2004-01-27 04:49:00) [4]
select * from new where name like "а%"
Потому что в двойных кавычках указывается имя столбца (например, содержащего пробел или названного как зарезервированное слово), а твой запрос должен выглядеть так же, как и в консоли
select * from new where name like "а%"
NoName (2004-01-27 04:35:00) [5]
В вопросе указано что за ошибка
ЮЮ (2004-01-27 04:33:00) [6]
Хотя бы сказал, что за ошибка
NoName (2004-01-27 04:29:00) [7]
Но почему код вызывает ошибку?
ЮЮ (2004-01-27 04:18:00) [8]
> потомучто для того чтобы динамичиски передать одинарные кавычки в запрос надо написать двойные кавычки
Это твоё мнение.
На самом деле, чтобы текстовая константасодержала символ "одинарная кавычка" он должен быть наброн дважды:
Find.SQl.Add("where name like """+edit1.Text+"% """);
NoName (2004-01-27 04:02:00) [9]
" в консоли InterBase не будут работать
А в Delphi если " заменить на " тоже error потомучто для того чтобы динамичиски передать одинарные кавычки в запрос
надо написать двойные кавычки
ЮЮ (2004-01-27 03:56:00) [10]
А почему в консоли InterBase ты используешь ", а в Delphi " ?
С " в консоли InterBase тоже проходит?