FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Fechas en Filtros
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. |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
Prueba a poner esto:
BD.Baja.Filter:='((FechaFin > #'+fechaI+'# OR FechaFin = NULL) AND (FechaInicio <= #'+fechaF+'#))'; No lo he probado, pero creo que funcionara |
#5
|
|||
|
|||
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; |
|
|
|