Consulta SQL

Iniciado por TheGhost(Z), 30 Junio 2009, 18:15 PM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Hola, veran tengo que hacer un consulta SQL del tipo

"Select * From Flores WHERE Estado IN ('Pendiente','Enviado,'Entregado','Anulado')"


Los datos los cojo de 4 Check's. Mi difcultad esta en obtenerlos ya que tengo que hacer varios IF's ....

IF Check1=1 And Check2=1 AND Check3=1 AND Check4=1
IF Check1=1 And Check2=0 AND Check3=1 AND Check4=1
IF Check1=1 And Check2=0 AND Check3=0 AND Check4=1
IF Check1=1 And Check2=0 AND Check3=0 AND Check4=0
.
.
.
....
como veran boy haciendo muchos IF para cada caso, cosa que me enrreda. Hay alguna manera mas simple de hacer esto?

GroK

Si la consulta original la tienes en una string, que tal si solo almacenas hasta:

Select * From Flores WHERE Estado IN (

Y luego compruebas con solo 4 If's cada uno de los checks y, en caso de que alguno este activado, concatenas la opcion correspondiente a la cadena con los operadores + ó &. Al finalizar le concatenas el ultimo parentesis y ejecutas la consulta. Y ten cuidado también con las comas que hay entre medio.

Saludos
"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant


cassiani

Tambien tienes está opción, parecida a la que te mostro el amigo en la respuesta anterior:
Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim sCadena As String

   sCadena = "Select * From Flores WHERE Estado IN (" & _
   IIf(Check1, "'Pendiente'", "") & _
   IIf(Check2, ",'Enviado'", "") & _
   IIf(Check3, ",'Entregado'", "") & _
   IIf(Check4, ",'Anulado'", "") & ")"
   
   sCadena = Replace(sCadena, "(,", "(")
   Debug.Print sCadena
   
End Sub


Mi recomendación es que trabajes con matrices de objetos, para los checks en este caso.
Recuerda o deberías hacer la validación para el caso en que ningún check este chequeado, no permita la consulta o recibiras un bonito mensaje de error..

saludos!!

TheGhost(Z)

Gracias, muchachos. me ha sido de gran ayuda