![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
параметр SQL-запроса в ADOQuery
kopernik21187 © (2008-08-14 11:20:00)Проблема в следующем!
Есть ADOTable , есть ADOQuery и есть DateTimePicker1 и DateTimePicker2 ...нужно путем
SQL-запроса вывести из таблицы ADOTable все строки где значение поля Дата0 лежит в интервале DateTimePicker1.Date и DateTimePicker2.Date
вот текст который забивается в SQL у ADOQuery:
select *
from Главная
where Дата0 > :Tann and Дата0 < :Tann1
далее лезу в свойство Parameters нахожу :Tann и :Tann1 пытаюсь ему в DataType
поставить ftDate,но почему-то Delphi сделать этого не дает и ставит
за место этого ftDateTime.
Вопрос может показаться глупым: почему Delphi не дает поставить параметрам :Tann и :Tann тип ftDate а ставит за место этого ftDateTime,а после выполнения
запроса вообще ftFixedChar?
далее обработчик кнопки делаю таким то выдается ошибка:
"Data type mistmach in criteria exppression"
procedure TForm1.Button1Click(Sender: TObject);
begin
DataModule1.ADOQuery.active:=false;
DataModule1.ADOQuery.parameters.parabyname('tann') .value:=
DateTimePicker1.Date;
DataModule1.ADOQuery.parameters.parabyname('tann1' ).value:=
DateTimePicker2.Date;
DataModule1.ADOQuery.active:=true;
FindResultForm.ShowModal;
end;
если такой
procedure TForm1.Button1Click(Sender: TObject);
begin
DataModule1.ADOQuery.active:=false;
DataModule1.ADOQuery.parameters.parabyname('tann') .value:=
DateTimePicker1.DateTIME;
DataModule1.ADOQuery.parameters.parabyname('tann1' ).value:=
DateTimePicker2.DateTIME;
DataModule1.ADOQuery.active:=true;
FindResultForm.ShowModal;
end;
то все нормально но запрос выдает не то что нужно
пробовал и так
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:='select * from Aeaaiay where Aaoa > :Dann';
DataModule2.ADOQuery1.Active:=false;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add(s);
DataModule2.ADOQuery1.Parameters.ParamByName('Dann').Value:=
DateTimePicker1.Date;
// DataModule2.ADOQuery1.Parameters.ParamByName('Dann1').Value:=
//DateTimePicker2.Date;
DataModule2.ADOQuery1.Active:=true;
ResultZapros.ShowModal;
// s:=datetostr
end;
но опять "Data type mistmach in criteria exppression"
делал все в Delphi 6.0
база создана в MS Access 2003
конечно проблема может быть надумана,но тем не менее заранее спасибо всем кто ответит или подскажет как можно сделать по другому тоже самое.
kopernik21187 (2008-08-18 13:22:00) [1]Все в порядке!проблема решена....я просто забыл подключить модуль DB
MsGuns (2008-08-14 15:21:00) [2]>вот текст который забивается в SQL у ADOQuery:
>where Дата0 > :Tann and Дата0 < :Tann1
Для этих целец "кузявее" BETWEEN
>далее лезу в свойство Parameters нахожу
Не надо туда вообще лазить
>Вопрос может показаться глупым: почему Delphi не дает поставить параметрам :Tann и :Tann >тип ftDate а ставит за место этого ftDateTime
Потому что дата - это частный случай даты-время. Если нужно взять инервал между двумя датами,
то надо в качестве параметров подставлять время 00:00 даты "с" и время 23:59 даты "по", используя имеющиеся в делфи функции DecodeDateTime и EncodeDateTime
Vlad Oshin (2008-08-14 12:05:00) [3]можно узнать формат даты на сервере и преобразовать свой к такому же, передавать как строку...
или установить формат даты для сессии на время запроса как удобнее и выполнить..но тут не скажу, не знаю MS Access