Access - Devolver todos los registros en una consulta con criterio SiInm

 
Vista:
sin imagen de perfil

Devolver todos los registros en una consulta con criterio SiInm

Publicado por Dirkan (2 intervenciones) el 06/07/2014 21:36:14
Hola a todos, la pregunta en principio es bastante sencilla, pero me está volviendo loco.

Como puedo hacer para que una consulta devuelva todos los registros cuando se cumpla una condición???

Es decir, si en un criterio de la consulta pongo una función tal que así:

SiInm(ES NULO [CAMPO1];"DEVUELVE TODOS LOS REGISTROS";[CAMPO1])

Cuando en el campo1 pongo un valor cualquiera, la consulta devuelve solo el registro coincidente, hasta aquí todo Ok, pero cuando ese campo está vacío no devuelve ningún registro ¿?¿?, que es justo lo que quiero.

El Campo1 está en un formulario, pero no creo que tenga nada que ver :-/

Lo he probado de todas las formas que conozco, con "", con *, con EsNulo, etc.

Ya no se me ocurre nada más, alguna ayuda?

Mil gracias desde ya.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Devolver todos los registros en una consulta con criterio SiInm

Publicado por 2PL (77 intervenciones) el 07/07/2014 11:48:38
El tratamiento de los campos nulos es un rollo, yo te doy una solución a mi manera.
Te duplicas la consulta, en una en el campo criterio pones [forms]![NOMBRE DEL FORMULARIO]![NOMBRE DEL CAMPO] y en la otra consulta en el campo criterio pones Null
En el formulario en el evento "Al actualizar" de tu campo, pones
1
2
3
4
5
if me.campo1=null then
    docmd.openquery "la consulta de null"
else
   docmd.openquery "la otra consulta"
endif
Si dejas el campo en blanco, tecleas al menos un espacio.
PD:
Agrandes males, grandes remedios con imaginación.
Saludos desde Cádiz
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Devolver todos los registros en una consulta con criterio SiInm

Publicado por roniux (1 intervención) el 05/10/2014 08:46:34
Hola, el valor a utilizar es bien sencillo,

Tu tienes el siguiente criterio:

SiInm(ES NULO [CAMPO1];"DEVUELVE TODOS LOS REGISTROS";[CAMPO1])

Para que te de todos los registros y practicamente apagues el criterio debes emplear el nombre del mismo campo para que te devuelva todo su información, utilizando la siguiente sintaxis:

SiInm(ES NULO [CAMPO1],([Nombre de la tabla que contiene el campo].[El nombre del mismo campo sobre su propio criterio]),[CAMPO1])

Aqui te dejo un ejemplo

Campo dentro de consulta:

Tabla: GeneralesPersona
Campo: Estado (Es un campo Si/No, para simular si la persona está activa o inactiva)

SiInm([Formularios]![ConsultasFormularioProfesion]![SubformularioConsultasProfesionGeneralesPersona].[Formulario]![SubFiltro]="Falso",([GeneralesPersona].[Estado]),[Formularios]![ConsultasFormularioProfesion]![SubformularioConsultasProfesionGeneralesPersona].[Formulario]![AlternarEstadoPersona])

Uso cuadros de texto de formularios abiertos, desde un subformulario, si el valor es falso "[Formularios]![ConsultasFormularioProfesion]![SubformularioConsultasProfesionGeneralesPersona].[Formulario]![SubFiltro]="Falso"" me da todos los campos "([GeneralesPersona].[Estado])", si el valor es verdadero, entonces los filtra desde un botón de alternar "[Formularios]![ConsultasFormularioProfesion]![SubformularioConsultasProfesionGeneralesPersona].[Formulario]![AlternarEstadoPersona]", dentro del subformulario en pantalla, siendo un tipo de estado Si/No, con ello logró enviar reportes con tres tipos de estados diferentes, todos los valores, valores Si o valores No.

Con ello cuando la condición sea verdadera te dará todos los campos, sólo debes tener mucho cuidado porque puedes hacer redundancia como estas utilizando los campos. Espero esto ayude, saludos desde Guatemala
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de VICENTE

Devolver todos los registros en una consulta con criterio SiInm

Publicado por VICENTE (32 intervenciones) el 26/11/2014 13:32:59
Buenas Roniux, gracias por esta solución.

Me funcionó correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Devolver todos los registros en una consulta con criterio SiInm

Publicado por JUAN CARLOS (1 intervención) el 18/04/2016 13:45:52
Hola, podrías explicarlo de una manera mas sencilla. Tengo varios campos y deseo consultar según seleccione el usuario. Campo PrecioMaximo,numhabitaciones,zona, etc.. si seleciona un valor para todos me hace la consulta correctamente, pero si pone como precio maximo 500 € pero no especifica el numero de habitaciones( es decir, lo deja en blanco) en vez de mostrarme todos los pisos que valen menos de 500 sin importar el numero de habitaciones, no me muestra nada. Tengo puesto esto como criterio de consulta:
Como (SiInm(EsNulo([Formularios]![FormularioInforme]![Habitaciones]);"*";([Formularios]![FormularioInforme]![Habitaciones]))).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Devolver todos los registros en una consulta con criterio SiInm

Publicado por Javivi (1 intervención) el 15/11/2016 12:32:22
roniux ¡muchísimas gracias, tu aclaración ha sido fundamental para mi trabajo! Gracias por el tiempo que dedicaste a contestar.
Un saludo desde León,España.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Devolver todos los registros en una consulta con criterio SiInm

Publicado por YONYCASAM (1 intervención) el 06/06/2019 17:17:01
Super!!!!!!!!!!!!!!!

funciona a la perfección.

Increible!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar