Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 07-05-2021
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
hola a todos:

Cita:
Empezado por Casimiro Notevi Ver Mensaje
+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';
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tratar los resultados de una consulta sql. botones67 SQL 10 17-03-2011 19:24:03
Llamar a un stored procedure de mysql y recuperar resultados tksko Conexión con bases de datos 4 05-11-2008 16:26:24
Consulta con resultados erroneos Alexander Conexión con bases de datos 1 29-08-2006 03:58:36
Reconocer si la consulta no dio resultados La__X SQL 1 28-04-2006 21:15:03
Consulta sin resultados!!!! Giniromero Conexión con bases de datos 8 03-10-2003 13:17:41


La franja horaria es GMT +2. Ahora son las 18:15:08.


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
Copyright 1996-2007 Club Delphi