Consulta en función del valor de uno o varios combobox

Estoy intentando hacer una consulta en Access basada en los valores de cinco combobox pero ninguno de ellos es obligatorio rellenar. Por lo tanto, la consulta puede estar centrada en uno, dos o hasta cinco campos (que son los combos).

Hasta ahora, en los criterios de la consulta estoy indicando en cada campo y referido a ese mismo campo:

SiInm(EsVacío([CODI]),",[Formularios]![Autoexec]![Codi]") ----> esto para el campo CODI

SiInm(EsVacío([COMARCA]),",[Formularios]![Autoexec]![Comarca]") ----> esto para el campo COMARCA

Y sucesivamente... Pero no me devuelve nada si indico dos campos y dejo tres vacíos. He probado a insertar % o ** en caso que se cumpla la condición pero nada. No devuelve resultados. Luego entonces, ¿qué debo indicar para que si se cumple la condición ese campo no marque criterio a seguir?

Respuesta
1

Personalmente no me gusta utilizar SiInm() para hacer consultas complejas, prefiero crear una función en donde se tiene más claridad y control. No obstante, parece que la instrucción está incompleta. En este caso le pregunto :

¿Los combobox devuelven el mismo tipo de datos, es decir, todos son texto o numéricos?

Porque si los controles son del mismo tipo de datos se pueden recorrer con un For Each y armar la consulta concatenando con OR.

Sería conveniente subiera imágenes del formulario y la tabla, así le elaboro la consulta con datos reales para que le facilite comprenderlo.

Gracias por contestar. Este es el formulario (todo texto):

y estos son los campos de la tabla donde hacer la consulta:

Vamos a ver si entendí su pregunta. Tengo las siguientes tablas:

Tengo el siguiente formulario con los cuadros combinados que tienen como origen de datos la tabla tblCodigos.

Hago clic sobre el botón Consultar y obtengo el siguiente resultado:

Explicación:

Utilizo la propiedad "Información adicional" de cada campo para recorrer los 6 controles (podrían ser 20 o más).

Observe que en la "Información adicional" anoto el nombre del campo de la tabla tblproyectos, en este caso CODI. Se debe hacer esto para todos los cuadros combinados. Con base en esto procedo a programar el botón Consultar.

Observe como construyo la instrucción SQL recorriendo todos los controles que sean de tipo combobox que tengan información. Posteriormente creo la consulta "temQry" con base en el texto almacenado en la variable strSQL. Por último abro la consulta.

Seguro que hay más formas de hacerlo pero personalmente me gusta aprovechar las propiedades de los formularios. Es posible que para su caso específico deba hacer algunos ajustes.

Si quiere el ejemplo lo puede solicitar a [email protected], favor anotar en el asunto la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas