Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Between DateTimePicker com fechas iguais (https://www.clubdelphi.com/foros/showthread.php?t=18733)

le4br 21-02-2005 20:49:03

Between DateTimePicker com fechas iguais
 
Hola, estoy hacendo una busca de valores entre dos DateTimePicker (fecha), pero cuando el DateTimePicker3 tiene la misma fecha que el DateTimePicker4, la busca no resultada en nadia (DBGrid vazio). Ej.
DateTimePicker3 = 21/02/2005 y DateTimePicker4 = 21/02/2005, el resultado de la busca es "No hay entradas", pero si el DateTimePicker3 = 21/02/2005 y DateTimePicker4 = 22/02/2005, el resultado es todos los valores donde la fecha es 21/02/2005. Como puedo solucionar esto? Com Between y data >= o <= no funciona...

Delphi 7, ADO y Access (campo data es tipo DateTime Short).

Código Delphi [-]
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('SELECT *');
ADOQuery2.SQL.Add('FROM TblComp');
//ADOQuery2.SQL.Add('WHERE data >= datainicial AND data <= datafinal ORDER By data');
ADOQuery2.SQL.Add('WHERE data BETWEEN datainicial AND datafinal ORDER By data');
ADOQuery2.Parameters.ParamByName('datainicial').Value := FormatDateTime('dd/M/yyyy', 

DateTimePicker3.Date);
ADOQuery2.Parameters.ParamByName('datafinal').Value := FormatDateTime('dd/M/yyyy', 

DateTimePicker4.Date);
ADOQuery2.Open;
if ADOQuery2.IsEmpty then
begin
     ADOQuery2.Close;
     ADOQuery2.SQL.Clear;
     MessageBox(Handle, 'No hay entradas.', 'Warnning', Mb_Ok + MB_ICONHAND + Mb_DefButton1)

marcoszorrilla 21-02-2005 21:40:43

Pues acabo de hacer una prueba y me funciona sin ningún problema.

Un Saludo.

sercornejov 21-02-2005 22:34:34

en el evento OnChange de los DateTimePicker, coloca la propiedad TIME así:

para el de la fecha más antigua (es decir el DateTimePicker3):

DateTimePicker3.time:=StrToTime('00:00:01');

para el de la fecha más nueva (es decir el DateTimePicker4):

DateTimePicker3.time:=StrToTime('23:59:59');

Esto puede solucionarlo. Lo que pasa es que cuando le pasas solo un date a los DateTimePicker, ellos tienen (por lo general) la misma hora, así que resultan "IGUALES"

Sergio

le4br 23-02-2005 05:18:56

Cita:

Empezado por sercornejov
... Esto puede solucionarlo. Lo que pasa es que cuando le pasas solo un date a los DateTimePicker, ellos tienen (por lo general) la misma hora, así que resultan "IGUALES"

Si la fecha y hora son iguales no puede haber un "between". Funciono! Muchissimas gracias.


La franja horaria es GMT +2. Ahora son las 01:04:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi