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

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

Проблема с запросом [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 тоже проходит?


Наверх

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