Доброго времни суток!
Друзья вот такая у меня проблема...
Есть огромный длинный работающий корректно запрос (писала не я). Мне нужно его модифицировать так, чтобы через DateTimePicker пользователь указывал нужный промежуток времени и эти даты послужили бы входными параметрами для запроса.
В запросе даты задаются через вот такую конструкцию:
with
dd AS (SELECT /* Укажите отчётный период и книжку*/
TO_DATE ('07.08.2012 00:00:00', 'DD.MM.YYYY HH24:MI:SS') date_start,
TO_DATE ('07.08.2012 23:59:59', 'DD.MM.YYYY HH24:MI:SS') date_finish,
'' book
FROM DUAL)
Далее в тексте везде используется ссылка на эти даты вот в таком виде к примеру:
(req.date_close between date_start and date_finish)
Казалось бы всё просто... вместо
TO_DATE ('07.08.2012 00:00:00', 'DD.MM.YYYY HH24:MI:SS') date_start
написать
:date1 date_start,
а в коде обработчика указать:
QueryZayavl.Params.Items[0].Value:=strtodatetime(datetostr(DateStart.DateTime)+ '00:00:00'); //т.к. выгрузка на одно число
QueryZayavl.Params.Items[1].Value:=strtodatetime(datetostr(DateFinish.DateTime)+ '23:59:59');
Но как только не извращалась с заданием параметров, запрос выдавал нулевой результат.
Последнее издевательство выглядит вот так:
QueryZayavl.Active:=false;
QueryZayavl.Close;
QueryZayavl.SQL.Clear;
stroka:='with ';
stroka:=stroka+' dd AS (SELECT ';
stroka:=stroka+'TO_DATE('''+datetostr(DateStart.DateTime)+ ' 00:00:00'+''', ''DD.MM.YYYY HH24:MI:SS'') date_start, ' ;
stroka:=stroka+'TO_DATE('''+datetostr(DateFinish.DateTime)+ ' 23:59:59'+''', ''DD.MM.YYYY HH24:MI:SS'') date_finish, ' ;
stroka:=stroka+nomer+' book ' ;
stroka:=stroka+'FROM DUAL), ' ;
QueryZayavl.SQL.LoadFromFile(ExtractFilePath(Application.ExeName)+'Zayavl.sql'); //добавляется остальная часть запроса
stroka:=stroka+QueryZayavl.SQL.Text;
QueryZayavl.SQL.Text:=stroka;
QueryZayavl.SQL.SaveToFile(ExtractFilePath(Application.ExeName)+'Hren.sql');//сформированный текст запроса сохраняем в файл
QueryZayavl.Prepare;// предварит синтаксич разбор
QueryZayavl.Execute;
QueryZayavl.Active:=true;
Запрос выдаёт нулевой результат, т.е. в ДбГрид появляются верные названия столбцов, но строк нет.
При этом, если в pl/sql выполнить запрос, который сохраняется в файл Hren.sql то получаем нужный результат.
Подскажите пожалуйста, в чём может быть проблема.