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

Вниз

Как же все-таки правильно написать 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
7-95990
voodoo_alex
2002-06-11 12:55
2002.08.29
Speaker don t


1-95797
^Sanya
2002-08-20 00:11
2002.08.29
WinXP Processes


1-95830
Nikson
2002-08-17 13:24
2002.08.29
Сохранение выделения в StringGrid


1-95847
просто панк
2002-08-17 01:50
2002.08.29
Rich Edit


3-95636
exciter_
2002-08-07 15:34
2002.08.29
IB6. Доступ к таблице в другой GDB.