Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
3-95704
Sim0n
2002-08-08 08:54
2002.08.29
помогите разобраться с DBGrid


14-95973
Сочувствующий
2002-08-05 13:20
2002.08.29
А почему ветку в сокр. варианте не дает?


1-95753
кондратий
2002-08-19 10:47
2002.08.29
DLL / Units


14-95971
FLIZ
2002-07-30 16:44
2002.08.29
Кто достоин носить звание


14-95959
Ученик
2002-08-04 21:03
2002.08.29
Клиент форумов




   Наверх