PDA

Ver la Versión Completa : Ayuda con consulta fecha y hora


rafaelon
08-09-2017, 18:40:07
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
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, 19:44:06
Si tienes un campo fecha, entonces:
select * from ventas where Fecha= :lafechaquesea

rafaelon
08-09-2017, 20:03:02
Gracias por la repuesta , pero eso es básicamente lo que hago arriba ,

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 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, 20:16:08
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, 20: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, 20: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:
select campo from tabla where fecha like '08-09-2017%'

movorack
08-09-2017, 21:02:54
Revisa este hilo (http://www.clubdelphi.com/foros/showthread.php?p=514202#post514202)

rafaelon
08-09-2017, 22:55:12
lo resolvi de esta manera no se si sea la mas optima , gracias por sus respuestas

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;