Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.045 c
1-53496
Spy.RU
2004-02-05 08:05
2004.02.17
The project already contains a form or module named Unit2!!!


1-53538
Ivolg
2004-02-05 14:36
2004.02.17
Скин


1-53533
kvi
2004-02-05 15:55
2004.02.17
dragdrop


14-53735
Anatoly Podgoretsky
2004-01-28 14:53
2004.02.17
Сегодня где то провало трубу


1-53477
Dmitriy
2004-02-06 12:48
2004.02.17
Цикл по Edit ам...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский