Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Filtro por fecha (https://www.clubdelphi.com/foros/showthread.php?t=59064)

Jason_zakio 12-08-2008 03:48:37

Filtro por fecha
 
Todo bien compañeros!

Uso Firebirt
Campos (id, fecha, total)
Ocupo su gran ayuda! Tengo un formulario y necesito filtrar por fecha ejemplo(15/10/08) pero no logro como hacerlo, porfavor se los pido con mi corazón expliquemento con detalle para entenderlo bien.
Explico como lo tengo y de esta manera no me funciona!
Ten un componente DataTimePicke
En el evento OnChange tengo este código:

Cuando trato de filtrar la fecha no la filtra sino que pone el Dbgrid en vacio.. porfavor es urgente se los ruego expliquemenlo! MIllones de gracias!!!!



Código Delphi [-]
procedure TFrmCierreDiario.F_ActualChange(Sender: TObject);
var
filtrando : string;
begin

if not Modulo.IBTransaction1.InTransaction then
Modulo.IBTransaction1.StartTransaction;
with Modulo.IBFactutas do begin
Close;
SelectSQL.Clear;

SelectSQL.Add('SELECT id, fecha, total');
SelectSQL.Add('FROM Facturas');
SelectSQL.Add('WHERE UPPER(Fecha) LIKE ''' + DatetoStr(f_actual.Date) +'%''');
SelectSQL.Add('ORDER BY id');

Open;
end;
end;

Caro 12-08-2008 05:32:22

Hola jason_zakio, cuando haces consultas por fechas en firebird debes pasarle en fomato mm/dd/yyyy.

Código Delphi [-]
.................
SelectSQL.Add('WHERE Fecha = ''' + FormatDateTime('mm/dd/yyyy',f_actual.Date)+''');
.................

o también puedes utilizar parametros, busca en el foro.

Saluditos

Jason_zakio 13-08-2008 06:00:01

No se porque no me funciona :mad: trate de esta manera y nada que funciona:


Código Delphi [-]
SelectSQL.Add('SELECT id, fecha, total');
SelectSQL.Add('FROM Facturas');
SelectSQL.Add('WHERE UPPER(Fecha) LIKE ''' + FormatDateTime('dd/mm/yyyy',f_actual.Date) +'%''');
SelectSQL.Add('ORDER BY id');




alguna ayuda que me guie se los agradesco, xq cuando digito la informacion en el TDataTime trata de filtrar pero al final limpia el Dbgrit como si no encontrara ningun dato... por ejemplo hay una factura con la fecha 16/05/2008 y en el TDataTime busco esta misma fecha pero no me tira ningun resultado... estoy frustrado xq intento y nada... porfavor ayudenme

Gallosuarez 13-08-2008 14:43:24

Sugerencia...
 
Jason:

Primero, como dices que existe una una factura con la fecha 16/05/2008 (dd/mm/aa), entoces prueba tu query así:

Código Delphi [-]
SelectSQL.Add('where Fecha = cast(''' + '05/16/08' + ''' as date)');

Si es que ahora ya te filtró correctamente, entonces prueba el siguiente código:

Código Delphi [-]
 
SelectSQL.Add('where Fecha = cast(''' + FormatDateTime('mm/dd/yy', f_actual.Date) + ''' as date)');

Ojo: acuerdate que el formato debe de ser 'mm/dd/yy'

Saludos,
Gerardo Suárez Trejo

P.D. No creo que te sirvan de algo los operadores UPPER y LIKE cuando trabajas con fechas. Tal vez te te sirvan los operadores BETWEEN y AND. Otra cosa que es muy importante: el campo Fecha debe de ser de tipo DATE no de tipo TIMESTAMP, sino tendras que poner algo asi: ... cast(Fecha as date) = cast(....


La franja horaria es GMT +2. Ahora son las 18:42:04.

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