Главная страница
    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.008 c
1-53521
Alex_x
2004-02-05 17:02
2004.02.17
Ofiice+Delphi


1-53463
ЧупаЧупч
2004-02-06 14:59
2004.02.17
Ави файл


8-53661
M@D
2003-10-17 10:39
2004.02.17
TMediaPlayer и 320 kbps 44 kHz файл.


1-53557
WebErr
2004-02-09 15:23
2004.02.17
Функция CreateProcess в Delphi


14-53738
Думкин
2004-01-28 06:39
2004.02.17
С днем рорждения! 28 января.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский