Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Вниз

Как же все-таки правильно написать SQL запрос в дельфи? (+)   Найти похожие ветки 

 
DeniM   (2002-08-07 16:51) [0]

Доброго дня, уважаемые Мастаки!

Облазил весь сайт, но так и не нашел ответа на вот какой вопрос...
s1 - строковая переменная (запрос к БД)
ComboBox4.Text - значение для уточнения запроса.

s1 := "select * from readers where code";
ComboBox4.Text принимает значения (например): Русский, Английский

По выбору комбобокса надо чтобы отображались данные только с выбранным значением.

Итак, пишем...

ADOQuery1.SQL.Add("SELECT * FROM READERS WHERE CODE =");
Case ComboBox4.ItemIndex of
0: ADOQuery1.SQL.Add("select * from READERS where CODE = " + ComboBox4.Text);
1: ADOQuery1.SQL.Add("select * from READERS where CODE = "Английский");
end;
ADOQuery1.Active := true;

Увы, но не работает ни в первом случае, ни во втором.

В первом (отловлено трассировкой) запрос выглядит как
"Select * from readers where code = Русский" - что неверно по синтаксису.
Во втором не проходит, поскольку Английский в строке не воспринимается как значение в апострофах.
Пробовал и такой вар-т - (Select * from readers where code = "Русский") - Delphi ругается что нет столбца Русский.

Как же правильно написать? Как загнать символы апострофа в строковую переменную?

Заранее спасибо.
ДениМ.


 
Mike Kouzmine   (2002-08-07 16:55) [1]

ADOQuery1.SQL.Add("SELECT * FROM READERS WHERE CODE =:CODE");
Case ComboBox4.ItemIndex of
0: ADOQuery1.ParamByName("CODE").asString := "Русский";
1: ADOQuery1.ParamByName("CODE").asString := "Английский";
end;


 
sniknik   (2002-08-07 16:57) [2]

ADOQuery1.SQL.Add("select * from READERS where CODE = """ + ComboBox4.Text + """");

пробуй


 
Fiend   (2002-08-07 16:58) [3]

То DeniM
Ну это вы уж совсем обнаглели. Ф1 для кого придумали. При чём здесь запрос и всё остальное. Это просто частный случай.

Надо писать так:
Case ComboBox4.ItemIndex of
Case ComboBox4.ItemIndex of
0: ADOQuery1.SQL.Add("select * from READERS where CODE = """ + ComboBox4.Text+"""");
1: ADOQuery1.SQL.Add("select * from READERS where CODE = ""Английский""");


 
elv   (2002-08-07 17:02) [4]

Можешь к примеру воспользоватья Chr, только это все равно не правильно. Правильно будет так:
Query.SQL.Clear;
Query.SQL.Add("SELECT * FROM READERS WHERE CODE =:Langv");
if .... then
Query.ParamByName("Langv").AsString:="Русский";

Query.SQL.Open;



 
DeniM   (2002-08-07 17:02) [5]

Всем спасибо.

Заработало!

Удач всем, и безпроблемных кодов :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
7-95984
CrazyAngel
2002-06-14 18:18
2002.08.29
ExitWindowsEx


3-95703
kkot
2002-08-08 16:09
2002.08.29
DBGrid


14-95975
.nuke
2002-08-05 14:16
2002.08.29
Rx-Lib и sohoLib


3-95680
Aleksandr
2002-08-08 14:26
2002.08.29
При добавке индекса к таблице ругается...


1-95793
Андрусь
2002-08-19 18:27
2002.08.29
Вывод диалога после загрузки главного окна





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