[Delphi] Filtracja po time

0

Witam
Chcę filtrować bazę po polu time:

with ADOQuery2, SQL do
   begin
   Close;
   Clear;
   Add('SELECT ID,WAGA,FABRYKA,ZAKLAD,MASA,CZAS,DATA FROM IMPORT WHERE CAST(CZAS AS TIME) BETWEEN CAST(:czas_od AS TIME)  AND CAST(:czas_do AS TIME)');
   Parameters.ParamByName('czas_od').Value := DateTimePicker3.DateTime;
   Parameters.ParamByName('czas_do').Value := DateTimePicker4.DateTime;
   Label7.Caption:= Parameters.ParamByName('czas_od').Value;
   Label8.Caption:= Parameters.ParamByName('czas_do').Value;
   Open;
   end;

Niestety w tej postaci zapytnie nie zwraca mi wyniku. Po wpisaniu bezpośrednio do ADOQuery zapytania Select * from IMPORT where CZAS BETWEEN '0800' AND '2300' wszystko zadziałało więc problem w parametrach.
Probowałem też opcji :
Parameters.ParamByName('czas_od').Value := DateTimePicker3.Time;
niestety też nie działa.
Prosiłbym o pomoc.

0

Próbowałem też coś takiego :

  with ADOQuery2, SQL do
   begin
   Close;
   Clear;
   Add('SELECT ID,WAGA,FABRYKA,ZAKLAD,MASA,CZAS,DATA FROM IMPORT WHERE CZAS BETWEEN cast(:czas_od as time) AND cast(:czas_do as time)');
   Parameters.ParamByName('czas_od').Value.AsDateTime := DateTimePicker3.DateTime;
   Parameters.ParamByName('czas_do').Value.AsDateTime := DateTimePicker4.DateTime;
   Open;
   end;

ale wywala błąd:Invalid variant operation
Macie jakieś pomysły??

0

Dobra znalazłem rozwiązanie:

ADOConnection1.Connected:=True;
   DataSource2.DataSet:=ADOQuery2;
   DBGrid1.DataSource:=DataSource2;
   czas_od := TimeToStr(DateTimePicker3.Time);
   czas_do := TimeToStr(DateTimePicker4.Time);
   with ADOQuery2, SQL do
   begin
   Close;
   Clear;
   Add('SELECT ID,WAGA,FABRYKA,ZAKLAD,MASA,CZAS,DATA FROM IMPORT WHERE CZAS BETWEEN '''+czas_od+''' AND '''+czas_do+''';');
   //Parameters.ParamByName('czas_od').Value := DateTimePicker3.Time;
   //Parameters.ParamByName('czas_do').Value := DateTimePicker4.Time;
   Open;
   end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1