Вниз
Скачать: 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.009 c
1-95735
Kif
2002-08-16 20:09
2002.08.29
Есть вопрос...


1-95762
Юрий Федоров
2002-08-19 14:31
2002.08.29
TMyForm = class(TForm, IMyForm)


3-95633
BJValentine
2002-08-09 13:24
2002.08.29
Delphi+DTS


3-95630
Dim!S
2002-08-07 07:19
2002.08.29
Нумерация записей


4-96009
Dimrix
2002-06-24 21:57
2002.08.29
Проблема с отсылкой сообщений Winamp у при помощи PostMessages




   Наверх