Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Вниз

Трехступенчатый запрос   Найти похожие ветки 

 
Shved   (2002-12-03 17:33) [0]

Появилась очередная проблема. Нужно сформировать запрос, который будет выбирать из базы значения с определенной датой, затем из них значения по другому параметру, а из этой выборки опять выбирать по третьему параметру. Я написал примерно следующее:


begin
Form1.Query.Close;
Form1.Query.SQL.Clear;
Form1.Query.SQL.Add("select *");
Form1.Query.SQL.Add("FROM "AutoNew.DB" Bdauto");
Form1.Query.SQL.Add("WHERE AUTOM = :AutoSelect AND DRIVER IN (SELECT DRIVER FROM "AutoNew.DB" WHERE DRIVER = :DriverSelect");
Form1.Query.SQL.Add("and DEN IN (SELECT DEN FROM "AutoNew.DB" WHERE DEN BETWEEN :FirstDay and :SecondDay))");
Form1.Query.SQL.Add("ORDER BY DEN DESC");
Form1.Query.ParamByName("AutoSelect").AsString := AutoName;
Form1.Query.ParamByName("DriverSelect").AsString := DriverName;
Form1.Query.ParamByName("FirstDay").AsDate := DateTimePicker1.Date;
Form1.Query.ParamByName("SecondDay").AsDate := DateTimePicker2.Date;
Form1.Query.Open;
Form1.DBGrid1.DataSource:=Form1.DataSource2;
end;


Но не работает... :( Попереставлял местами запросы, использовал разные операторы выбора (IN, ANY, ALL), но результата не добился. В книгах ответа не нашел. Помогите новичку!


 
FreeLancer   (2002-12-03 17:37) [1]


WHERE DEN >= :FirstDay
AND DEN <= :SecondDay


 
passm   (2002-12-03 17:41) [2]

Shved © (03.12.02 17:33)> Exception.Message = ?
Может, ParamByName(...).DataType надо указать.


 
FreeLancer   (2002-12-03 17:42) [3]


Form1.Query.SQL.Add("select * FROM "AutoNew.DB" Bdauto"+#10#13+
"WHERE AUTOM = :AutoSelect "+#10#13+
"AND DRIVER = :DriverSelect"+#10#13+
"AND DEN >= :FirstDay "+10#13+
"AND DEN <= :SecondDay "+10#13+
"ORDER BY DEN DESC");


 
Johnmen   (2002-12-03 17:43) [4]

Ну и ну... Что, одним запросом никак ?


 
Shved   (2002-12-04 15:21) [5]

Так, граждане... Практически все вылечил сам, но есть один вопрос, который никак не могу решить.
Дело в том, что в запросе есть параметры AutoSelect и DriverSelect. Они формируются из ComboBox таким образом:


Form1.Query.ParamByName("AutoSelect").AsString := AutoName;
где AutoName:
case ComboBox1.ItemIndex of
0: AutoName:="Название машины 1";
1: AutoName:="Название машины 2";
....


Но в итоге сортировка идет, но выводится пустая строка. Подозреваю, что AutoName принимает значение без одинарных кавычек. Изменил код на:
case ComboBox1.ItemIndex of
0: AutoName:=(#39+"Название машины 1"+#39);
1: AutoName:=(#39+"Название машины 2"+#39);
....

Но проблема решена не была - опять пустая строка.

Отсюда вопрос: параметр Form1.Query.ParamByName("AutoSelect").AsString должен быть с кавычками? Если да, то что я делаю неправильно? И как правильно прописать присваивание этому параметру нужного текста, по которому будет идти выборка в таблице?


 
FreeLancer   (2002-12-04 15:53) [6]

2 Shved ©>
Так, граждане... Практически все вылечил сам
:-))) Продолжай "Самолечение"


 
Max Zyuzin   (2002-12-04 16:06) [7]

>Shved © (04.12.02 15:21)
Дык ты посмотри чему у тебя после твоего case стала равна переменная AutoName, и все встанет на свои места...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
3-74589
Gaber
2002-12-04 12:48
2002.12.23
EXEL & DB


3-74617
TVV
2002-12-05 13:02
2002.12.23
Blob поля через IBQuery запрос


1-74658
Pavel
2002-12-12 15:28
2002.12.23
IDE running


1-74685
Gennadiy
2002-12-10 18:33
2002.12.23
Работа с текстовым файлом


1-74794
Che
2002-12-11 13:31
2002.12.23
Текст в Delphi!!!! HELP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский