Filtrar por contenido de campo

Quiero filtrar una consulta por el contenido de un cuadro de textode un formulario, pero unas veces que me busque los registros con lo que yo ponga y otras lo que sea distinto a lo que yo ponga. Para eso pongo una casilla de verificación en la que indico si quiero buscar por lo que escribo o por lo distinto. Para eso pongo en criterio lo siguiente, y no me funciona, va todo bien menos la negación:
Como SiInm([Formularios]![Defectos_IAEE]![Verificación186]=Falso;SiInm([Formularios]![Defectos_IAEE]![Texto184]="*";"*";[Formularios]![Defectos_IAEE]![Texto184]);SiInm([Formularios]![Defectos_IAEE]![Texto184]="*";"*";([Defectos
IAEE].[Avance])<>[Formularios]! [Defectos_IAEE]![Texto184]))
En sql lo que tengo es:
Like IIf([Formularios]![Defectos_IAEE]![Verificación186]=False,IIf([Formularios]![Defectos_IAEE]![Texto184]="*","*",[Formularios]![Defectos_IAEE]![Texto184]),IIf([Formularios]![Defectos_IAEE]![Texto184]="*","*",([Defectos IAEE].[Avance])<>[Formularios]![Defectos_IAEE]![Texto184]))))
El problema es que cuando quiero buscar los registros con contenido distinto a lo que yo escriba no me sale nada.

1 respuesta

Respuesta
1
¿Por que no lo haces con un If?
Pones un botón y en el código de ese botón:
If Form!Verificacion186=False then
Docmd.Runsql ".............La sql que quieras"
else
Docmd.Runsql ".............La otra sql"
end If
Me cuentas.
El caso es que lo tengo con una sola consulta y yo escribo siempre en el mismo cuadro de texto y dependiendo si marco la verificación o no me buscará los coincidentes o los no coincidentes. Porque después con los resultados de la consulta saco un informe.
Y como tú me dices tengo que hacer dos consultas y por lo tanto dos formularios.
Si es que lo entendí bien.
Gracias por responder tan rápido, un saludo.
Creo que no me explqué bien, en el mismo formulario tienes el cuadro de texto que se llama, por ej. Texto1 y la casilla de verificación Verificacion1, en este mismo formulario pones un botón para que ejecute la consulta, lo que me tienes que decir es lo que quieres enviar al informe, en el código de ese botón es dónde ejecutarías las consultas dependiendo si la casilla verificación es Falso o Verdadero.
Me cuentas.
Lo que quiero enviar al informe es el resultado de la consulta filtrada por lo que escribo en el cuadro de texto. Por eso como tu me dices no sé como hacerlo.
He probado a hacerlo con dos consultas y dos informes y sí funciona pero es un poco chapuza.
Mañana volveré a intentarlo y te digo. Muchas gracias por tu interés.Un saludo.
Al final lo dejé con las dos consultas y dos informes y dependiendo si esta marcada la verificación o no muestro un informe o otro basado en su respectiva consulta porque de otra forma no soy capaz. De todas formas muchas gracias por tu ayuda.
Si tienes alguna sugerencia dímelo.Un saludo.
Puedes abrir el mismo informe mandándole dos condiciones distintas según la casilla de verificación:
If Form!Verificacion186=False then
DoCmd.OpenReport "InformeVariable", acViewPreview, , "Avance='" & [Formularios]![Defectos_IAEE]![Texto184].Value & "'"
else
DoCmd.OpenReport "InformeVariable", acViewPreview, , ""Avance<>'" & [Formularios]![Defectos_IAEE]![Texto184].Value & "'"
end If
Me cuentas.
Este es el código que puse y me da un error '2465' en la línea subrayada y no se por qué
Dim stDocName As String
Dim stDocName1 As String
If Form_Defectos_IAEE.Verificación186 = False Then
DoCmd.OpenReport stDocName, acPreview, "'Avance='" & [Formularios]![Defectos_IAEE]![Texto184].Value & "'"
Else
DoCmd.OpenReport stDocName1, acPreview, "'Avance<>'" & [Formularios]![Defectos_IAEE]![Texto184].Value & "'"
End If
Igual estoy haciendo algo mal.Un saludo.
Sobra una comilla simple:
"Avance<>'" & [Formularios]![Defectos_IAEE]![Texto184].Value & "'"
No tienes que utilizar 2 informes distintos, con el mismo te vale, ya que lo que haces es mandarle una condición distinta cada vez.
Me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas