Форум: "Базы";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизПроблема с запросом Найти похожие ветки
← →
NoName (2004-01-27 03:50) [0]Доброй ночи!
Помогите решить проблему: вовремя выполнения запроса
возникает ошибка 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 "а%";
выводит мне все имена на букву а.
Мучаюсь но не как не могу убрать этот баг.
ПОМОГИТЕ найти решение.
Зарание спасибо!
← →
ЮЮ (2004-01-27 03:56) [1]А почему в консоли InterBase ты используешь ", а в Delphi " ?
С " в консоли InterBase тоже проходит?
← →
NoName (2004-01-27 04:02) [2]" в консоли InterBase не будут работать
А в Delphi если " заменить на " тоже error потомучто для того чтобы динамичиски передать одинарные кавычки в запрос
надо написать двойные кавычки
← →
ЮЮ (2004-01-27 04:18) [3]> потомучто для того чтобы динамичиски передать одинарные кавычки в запрос надо написать двойные кавычки
Это твоё мнение.
На самом деле, чтобы текстовая константа содержала символ "одинарная кавычка" он должен быть наброн дважды:
Find.SQl.Add("where name like """+edit1.Text+"% """);
← →
NoName (2004-01-27 04:29) [4]Но почему код вызывает ошибку?
← →
ЮЮ (2004-01-27 04:33) [5]Хотя бы сказал, что за ошибка
← →
NoName (2004-01-27 04:35) [6]В вопросе указано что за ошибка
← →
ЮЮ (2004-01-27 04:49) [7]select * from new where name like "а%"
Потому что в двойных кавычках указывается имя столбца (например, содержащего пробел или названного как зарезервированное слово), а твой запрос должен выглядеть так же, как и в консоли
select * from new where name like "а%"
← →
NoName (2004-01-27 05:51) [8]и как это реализовать программно в Delphi ?
что - то у меня это не выходит :(((
← →
ЮЮ (2004-01-27 06:08) [9]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 06:38) [10]Cпасибо большое за помощь
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c