Форум: "Базы";
Текущий архив: 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