Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con consulta fecha y hora (https://www.clubdelphi.com/foros/showthread.php?t=92257)

rafaelon 08-09-2017 19:40:07

Ayuda con consulta fecha y hora
 
Hola tengo una programa que tiene un apartado "reporte diario" donde me muestra las ventas del dia , el problema es que si pasan de las 12am cambia la fecha y por supuesto ya no sale en el reporte , entonces como podria hacer una consulta que filtre por hora (12 pm a 6 am ) y fecha (dia actual y dia siguiente ) asi tengo mi codigo con solo el dia en curso , la hora tambien se guarda en la BD (access), gracias de antemano
Código Delphi [-]
procedure Tfrm_menu.FlatButton2Click(Sender: TObject);
begin
Buscarf (label7.Caption, encontrado);
if encontrado then
with frm_reportediario.ADOQuery1 do
begin
close;
sql.clear;
SQL.Text:= 'select * from ventas where Fecha like'+quotedstr('%'+frm_menu.label7.Caption+'%')+' ; '; ;
Open;
begin
a:=label7.Caption;
frm_reportediario.RLReport1.Prepare;
frm_reportediario.RLReport1.SaveToFile('C:\Billar\Reportes\Reportediario_' + (a)  + ('.pdf') );
frm_reportediario.RLReport1.Preview;
 end;
 end
 else
 Showmessage('No hay ordenes en el día')
end;

Casimiro Notevi 08-09-2017 20:44:06

Si tienes un campo fecha, entonces:
Código SQL [-]
select * from ventas where Fecha= :lafechaquesea

rafaelon 08-09-2017 21:03:02

Gracias por la repuesta , pero eso es básicamente lo que hago arriba ,

Código Delphi [-]
SQL.Text:= 'select * from ventas where Fecha like'+quotedstr('%'+frm_menu.label7.Caption+'%')+' ; '; ;
label7.Caption es la fecha

y lo que necesitaria seria al como
Código Delphi [-]
 SQL.Text:= 'select * from ventas where Fecha between (dia actual desde las 12pm  hasta dia siguiente a las 6am)

pero no lo he conseguido

Casimiro Notevi 08-09-2017 21:16:08

Cita:

Empezado por rafaelon (Mensaje 520933)
Gracias por la repuesta , pero eso es básicamente lo que hago arriba ,

No, no lo es. Tú usas like, yo he puesto =
De todas formas el problema es el mismo de siempre: no somos adivinos ;)
Se supone que tienes un campo fecha y otro campo hora.
Un campo fecha y un campo hora guardan un número.
Así que habrá que preguntarte:
¿De qué tipo es tu campo fecha?
¿Qué almacenas en el campo fecha?

rafaelon 08-09-2017 21:42:39

si cierto amigo , disculpa, el campo fecha es texto , antes tenia fecha y hora en campos distintos , pero probando otras soluciones ahora los tengo en el mismo (fecha) y guarda DD-MM-YYYY HH:MM

Casimiro Notevi 08-09-2017 21:48:04

Vaya, es una mala idea guardar una fecha en formato texto. Pero en fin, entonces tendrás que indicar la hora, además de la fecha, algo así como:
Código SQL [-]
select campo from tabla where fecha like '08-09-2017%'

movorack 08-09-2017 22:02:54

Revisa este hilo

rafaelon 08-09-2017 23:55:12

lo resolvi de esta manera no se si sea la mas optima , gracias por sus respuestas

Código Delphi [-]
procedure Tfrm_menu.FlatButton2Click(Sender: TObject);
var
dia:string;
begin
dia:=datetostr(IncDay(date, 1));
Buscarf (label7.Caption, encontrado);
if encontrado then
with frm_reportediario.ADOQuery1 do
begin
close;
sql.clear;
SQL.Text:= 'select * from ventas where hora between :PFechai and :PFechaf ';
frm_reportediario.ADOQuery1.Parameters.ParamByName('PFechai').DataType:=ftstring;
frm_reportediario.ADOQuery1.Parameters.ParamByName('PFechai').Value:=frm_menu.Label7.Caption +' ' + '12:00';
//showmessage (frm_reportediario.ADOQuery1.Parameters.ParamByName('PFechai').Value);
frm_reportediario.ADOQuery1.Parameters.ParamByName('PFechaf').DataType:=ftstring;
frm_reportediario.ADOQuery1.Parameters.ParamByName('PFechaf').Value:=dia +' ' +'6:00';
//showmessage (frm_reportediario.ADOQuery1.Parameters.ParamByName('PFechaf').Value);
Open;
begin
a:=label7.Caption;
frm_reportediario.RLReport1.Prepare;
frm_reportediario.RLReport1.SaveToFile('C:\Billar\Reportes\Reportediario_' + (a)  + ('.pdf') );
frm_reportediario.RLReport1.Preview;
 end;
 end
 else
 Showmessage('No hay ordenes en el día')


end;


La franja horaria es GMT +2. Ahora son las 19:06:02.

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