Вниз
Скачать: 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-95745
Сашечка
2002-08-18 23:47
2002.08.29
Графы - курсач


1-95878
skyslider
2002-08-18 04:11
2002.08.29
Как узнать какая строка выделена в StringGrid


3-95673
nic418
2002-08-08 04:12
2002.08.29
Выборка из 2-х таблиц по условию


4-96015
Dr.Karter
2002-06-25 16:04
2002.08.29
Работа с удаленным компьютером


1-95905
staratel
2002-08-16 13:30
2002.08.29
Работа с формами




   Наверх