Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Проблема с запросом   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
1-53498
Checist [root]
2004-01-29 17:24
2004.02.17
Нужен Grid


1-53628
Глупый юзер
2004-02-05 17:06
2004.02.17
Яркость в TBitmap


1-53455
Dik
2004-02-06 15:51
2004.02.17
TRichEdit


7-53792
Alien
2003-11-29 10:19
2004.02.17
>>> Как программно расшарить папку? <<<


1-53488
Юрий Федоров
2004-02-05 21:02
2004.02.17
Работа в Word