PDA

Ver la Versión Completa : Filtros


gerly
07-09-2003, 17:15:13
Hola!

Estoy tratando de filtrar los datos de una adoquery y no me deja poner los paréntesis donde los necesito.
El filtro debe ser más o menos así:

'fechaA < '+ fecha + ' and (fechaB = null or fechaB > ' +fecha);

fecha es una variable de tipo string donde voy almacenando una fecha.

El caso es que no admite los paréntesis ahí y si lo pongo sin paréntesis sí funciona, pero claro, no hace lo que necesito que haga.

Ya probé cambiando el SQL, pero tengo que cerrar y abrir la query cada vez y ese filtrado tengo que hacerlo dentro de un ciclo, por lo que se demora enormemente.

El problema es que tengo que filtrar para cada día del mes e ir contando cuántos records cumplen la condición. fechaA es la fecha de Alta y fechaB la fecha de Baja de los trabajadores. Lo que debe hacer es filtro es escoger solo los que estaban trabajando ese día.

Explico todo esto porque quizás hay otra forma de hacerlo que no sea con filtros.

saludos

DarkSide
08-09-2003, 07:29:54
Hola:
Yo no soy muy entendido en cuanto a ADOQuery, pero me parece que el codigo que escribiste:

'fechaA < '+ fecha + ' and (fechaB = null or fechaB > ' +fecha);

tiene un problema de sintaxis, prueba de esta forma:

'fechaA < '+ fecha + ' and (fechaB = null or fechaB > ' +fecha+ ')';

gerly
08-09-2003, 13:49:35
Sí es cierto que tenía un error de sintaxis, pero ese no es el problema. Eso fue a la hora de transcribirlo para acá.
:confused:

Bird15
08-09-2003, 14:07:55
Hola, el ado no lo manejo, pero ya probaste realizar un filtro a la tabla?, no se que base de datos usas pero di es Paradox o dbase, los campos que intervienen en la busqueda tendran que estar indexados, bueno lo que te digo es que pruebes utilizar SetRangeStar(), SetRangeEnd(), y ApplyRange, que creo que va ideal para tu caso. delphi tiene buena ayuda para eso.
ej: with table1 do begin
Fields[0].asdatetime:= pones la fecha de alta
setRangeend;
Fields[0].Asdatetime:= fecha de baja
applyrange;
end;
tambien se podria pasarlo a string, no sé .. suerte. Bird15. -

__cadetill
08-09-2003, 19:01:34
Veamos, estas en una Query, no? pues porque no pones esas condiciones en el where de la misma?

Otra cosa, tambien podria ser que no te funcionara porque las fechas van entre comilladas


'fechaA < '+ QuotedStr(fecha) + ' and (fechaB = null or fechaB > ' + QuotedStr(fecha) + ')';


a parte de esto, tambien influye el formato de fecha. No es lo mismo que le pases un string con el formato de fecha dd/mm/yyyy (formato español) a que se lo pases como mm/dd/yyyy (formato ingles y el que reconocen la mayoria de gestores de bases de datos)

Espero te sirva