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?
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
Tambien tienes está opción, parecida a la que te mostro el amigo en la respuesta anterior:
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!!
Gracias, muchachos. me ha sido de gran ayuda