PDA

Ver la Versión Completa : Fechas en Filtros


Nicole
29-09-2004, 16:10:11
Hola a todos.

Tengo un problema con un filtro en Delphi. Os explico. Quiero hacer un filtro de las bajas cuya fecha de inicio sea mayor que una fecha INI y cuya fecha fin sea vacía o menor que una fecha FIN. El problema es que no se como poner lo de que la fecha sea vacía. He probado con IS NULL, NULL, BLANK y no me funciona nada.

Tabla.Filter:='Fecha > #'+INI+'# AND (Fecha = NULL OR Fecha < #'+FIN+'#)';

Al activar el filtro me da un error.

Gracias.

Sick boy
29-09-2004, 17:09:45
Hola,

Nunca he usado NULL con fechas, pero segun la ayuda de delphi FECHA=NULL deberia funcionar.

¿ Te funciona si quitas lo de fecha=null ??

Un saludo

Nicole
29-09-2004, 17:45:47
Pues si me funciona lo de FechaFin=NULL.

La consulta en la que se encuentra ese código es la siguiente, que es la que no me funciona, porque me dice "argumentos incorrectos o en conflicto con otros".
Es un problema del OR y el AND, porque si le quito a partir del AND si me funciona.

BD.Baja.Filter:='(FechaFin > #'+fechaI+'# OR FechaFin = NULL) AND FechaInicio <= #'+fechaF+'#';

Gracias.

Sick boy
30-09-2004, 10:46:20
Prueba a poner esto:

BD.Baja.Filter:='((FechaFin > #'+fechaI+'# OR FechaFin = NULL) AND (FechaInicio <= #'+fechaF+'#))';

No lo he probado, pero creo que funcionara

Nicole
30-09-2004, 11:52:20
Tampoco me ha funcionado el filtro.

Finalmente he tenido que implementarlo con el método FilterRecord:

procedure TBD.BAJAFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
if bd.BAJAFechaInicio.Value <= fechaF then
if (bd.BAJAFechaFin.Value > fechaI) OR (bd.BAJAFechaFin.Value=0) then
accept:=true
else
accept:=false
else
accept:=false;
end;