hola a todos:
Cita:
Empezado por Casimiro Notevi
|
+1
A parte de no indicar el problema exacto que tienes en tu consulta SQL mezclas los AND y OR sin paréntesis, por lo que el filtrado quizás no sea exactamente como esperas, prueba de la siguiente forma tanto para la consulta con "=" y la de "<>"
Código SQL
[-]
WHERE opermv.fechadoc BETWEEN :fecha1 AND :fecha2
AND left(opermv.documento, 1) <> :nroserie
AND ( opermv.grupo <> :grupo1
OR opermv.grupo <> :grupo2
OR opermv.grupo <> :grupo3
OR opermv.grupo <> :grupo4
OR opermv.grupo <> :grupo5
OR opermv.grupo <> :grupo6
OR opermv.grupo <> :grupo7
OR opermv.grupo <> :grupo8
OR opermv.grupo <> :grupo9
OR opermv.grupo <> :grupo10
OR opermv.grupo <> :grupo11
OR opermv.grupo <> :grupo12
OR opermv.grupo <> :grupo13
OR opermv.grupo <> :grupo14
OR opermv.grupo <> :grupo15
OR opermv.grupo <> :grupo16
OR opermv.grupo <> :grupo17
OR opermv.grupo <> :grupo18
OR opermv.grupo <> :grupo19
OR opermv.grupo <> :grupo20
OR opermv.grupo <> :grupo21
OR opermv.grupo <> :grupo22
OR opermv.grupo <> :grupo23)
y para simplificar bastante el uso de tantos parámetros te recomiendo que utilices el comando
FIND_IN_SET de mySQL de tal forma que ese where podrías simplificarlo mucho.
Ejemplo para cuando quieres que coincida con la lista de grupos:
Código SQL
[-]
WHERE opermv.fechadoc BETWEEN :fecha1 AND :fecha2
AND left(opermv.documento, 1) <> :nroserie
AND FIND_IN_SET(opermv.grupo, :listGrupos)
y de esta forma para cuando no quieres que coincida con la lista de grupos
Código SQL
[-]
WHERE opermv.fechadoc BETWEEN :fecha1 AND :fecha2
AND left(opermv.documento, 1) <> :nroserie
AND NOT FIND_IN_SET(opermv.grupo, :listGrupos)
y desde delphi la lista de grupos la pasas simplemente a un único parámetro como lista separada por comas:
Código Delphi
[-] ParamByName('listGrupos').AsString:='1002,1003,...,1001';