Pasar valor texto y null de un formulario a una consulta

Estoy dando vueltas al tema y buscando mil ejemplos y no doy con la solución.

Tengo una consulta donde el campo puede ser texto o nulo, y un formulario donde quiero poner un filtro en el que si pongo que me saque los registros de por ejemplo valor "SI" no hay problema pero cuando le digo que me saque todo, osea los de valor "SI" o si Es Nulo, no hay manera.

En la consulta lo tengo así:

Como [Formularios]![formulario_todas_facturas_criterios]![cri_pagado]

Y en el formulario lo tengo, que al cambiar el valor en el combo:

Valores del combo: SI, NO, TODAS -> utilizo otro campo oculto en el formulario (cri_pagado) para pasar ahí el literal de la consulta

El evento lo tengo así:

Private Sub cuadro_pagado_Change()
If Me.Cuadro_pagado = "SI" Then
Me.cri_pagado = "SI"
End If
If Me.Cuadro_pagado = "NO" Then
Me.cri_pagado = "NO"
End If
If Me.Cuadro_pagado = "TODAS" Then
Me.cri_pagado = "* Or Es Nulo"

End If

He probado de mil maneras TODAS y en casi siempre me sale: No coinciden los tipos.

¿Alguna solución?

Ah, estoy con access 2007

1 respuesta

Respuesta
1

Reconozco que no me gustan las consultas, de hecho apenas las uso si puedo evitarlo. Por eso, por si te sirve. Si tengo la tabla Clientes

Puedes ver que hay alguno que no tiene País. Si tengo un formulario, donde le añado un combinado llamado Elegir y en el que en su origen de la Fila le pongo Alemania, Francia, Todas

Si elijo Alemania

Me queda comno

Si elijo Francia

Y si elijo Todas

El código del evento Después de actualizar del combinado Elegir es

Private Sub Elegir_AfterUpdate()
Select Case Elegir
Case Is = "Alemania"
Me.RecordSource = "select * from clientes where pais=""Alemania"""
Case Is = "Francia"
Me.RecordSource = "select * from clientes where pais=""Francia"""
Case Else
Me.RecordSource = "select * from clientes"
End Select
End Sub

Lo que pasa es que en el formulario tengo más filtros y tendría que poner a lo mejor en el código de la consulta todos los criterios, supongo.

Voy a probar, aunque igual con varios criterios que tengo igual es un jaleo. Gracias 

La ventaja del Select... es que puedes encadenar hasta 99 condiciones AND o OR. Por ejemplo

...."Select * from clientes where continente=""Europa"" and Pais=""Francia"" or pais=""Alemania"" and Nombrecliente=""*""&""pedr""&""*"" and cabello=""castaño"" or cabello=""Calvo como yo"""

Y si quiero sacar un campo nulo además con demás filtros como sería?

"Select * from clientes where continente=""Europa"" and Pais=""Francia"" or pais=""Alemania"" and Nombrecliente=""*""&""pedr""&""*"" and cabello=""castaño"" or cabello=""Calvo como yo"" and otrocampo= IsNull"

Efectivamente

And ciudad is null"

¡Gracias!

Hacía mucho que no tocaba ACCESS y cuando dejas algo un tiempo cuesta cogerlo, y más con múltiples criterios que empiezan a fallar, por un signo, una coma o cualquier tontería que no ves por más vueltas que le das.

Ya me funciona todo correcto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas