Access - Criterio condicional

 
Vista:
sin imagen de perfil

Criterio condicional

Publicado por Al (9 intervenciones) el 10/08/2018 00:02:37
Hola
Quiero establecer los criterios de una consulta desde un formulario.
Tengo un formulario que se llama Busqueda. En ese formulario hay un campo de texto que se llama REF.
Voy a la consulta y en la columna REF, en criterios, escribo [Formularios]![Busqueda]![REF]
Cuando en el formulario escribo un valor funciona bien. En la consulta me filtra por el valor que he escrito en el formulario. Pero cuando no hay nada escrito en el formulario entonces en la consulta no aparece ningun valor, es como si pusiera un criterio imposible. He probado varias formulas como SiInm([Formularios]![Busqueda]![REF]>"";[Formularios]![Busqueda]![REF];>0) pero no consigo que funcione. Si alguien sabe como hacerlo se lo agradeceré.
Muchas gracias
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

Criterio condicional

Publicado por Anonimo (3330 intervenciones) el 10/08/2018 09:56:26
Normalmente para referenciar a la ambigüedad (en Access) se utiliza el asterisco '*' no el espacio vacío que en si mismo representa a un supuesto.

Si el formulario SIEMPRE esta abierto (el 'siempre' representa a la utilización de la consulta desde el formulario) pueden darse varias posibilidades

-- una (que suele ser la primera) es que no exista un valor en el cuadro de texto por no estar inicializado (esto es: sea un NULL)
-- otra es que ya este iniciado el cuadro de texto pero no contenga un valor (será una cadena de texto vacía)
-- o que solo contenga espacios (parece vacío, pero tiene contenido por lo que ni es un NULL ni una cadena vacía pero no 'se aprecia' contenido)

Conclusión:
.- Si evaluamos la posibilidad del NULL (la función NZ) y esta como alternativa devuelve una cadena vacía ….
.- Si a lo anterior le aplicamos la función TRIM (que recortaría los espacios iniciales/finales 'no visibles') …..
.- Y al resultado le contamos su longitud (LEN)……

Obtendremos: o bien una cadena vacía (su longitud será cero y ello evaluara como uno solo a tres supuestos) o el dato real introducido (que no es garantía de que exista, puede ser 'un valor imposible' o simplemente no pertenecer a ese conjunto).

Si se diese el caso de utilizar la consulta sin abrir el formulario al que hace referencia, en lugar de lo anterior se tendría que 'construir' un IIF a medida en el que la condición se evaluase contra un error (hay funciones que delatan tipos de error o la genérica de IsError( ….) que delataría que el referente no existe al no 'existir' el formulario)

Nota: para Access un formulario u objeto similar que no este abierto … no existe a efectos prácticos.
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
sin imagen de perfil

Criterio condicional

Publicado por Al (9 intervenciones) el 10/08/2018 11:08:47
Muchas gracias.
El problema tengo al final de la formula.
SiInm([Formularios]![Busqueda]![REF]>"";[Formularios]![Busqueda]![REF];>0)
El problema esta en ;>0
No me da los valores REF mayores que 0, que son todos.
He probado a poner *,"" pero no sale nada.
El criterio de busqueda funciona bien. SiInm([Formularios]![Busqueda]![REF]>""
Si escribo SiInm([Formularios]![Busqueda]![REF]>"";[Formularios]![Busqueda]![REF];88) la formula separa muy bien. Si hay algún valor en el formulario utiliza ese valor como criterio y si no hay ningun valor entonces utiliza 88 como criterio. Lo que quiero es que si no hay ningun valor no me utilice 88 como criterio sino que me de todos los valores, pero no consigo. No se que tengo que poner para que el criterio sea todos.
Gracias de nuevo
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

Criterio condicional

Publicado por Anonimo (3330 intervenciones) el 10/08/2018 16:03:48
Parece que se ha vuelto trasparente parte de mi anterior respuesta, así que la repetiré (con un poco de suerte y algo de buena voluntad ahora será visible), copio y trascribo:

….
Normalmente para referenciar a la ambigüedad (en Access) se utiliza el asterisco '*' no el espacio vacío que en si mismo representa a un supuesto.
……….

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