Ir filtrando registros en función de un valor u otro en cuadros combinados

Tengo un formulario Búsqueda para filtrar registros. Registros que se encuentran en la tabla Código, en la que los campos los elijo mediante cuadros combinados.

1º Por medio de dos combos en cascada los filtro por Grupo y Familia. Tadas las combinaciones generadas están en un campo de la tabla Familia que se llama DescripciónF y son unas 50.

2º Una vez que ya tengo un Grupo y una Familia filtrada en concreto, (DescripcióF), tengo otros 6 combos; Material, Talla, Medida, Tipo, Grado y Ø, con sus respectivos origen de la fila en sus tablas (Material, Talla, etc...)

3º Para seguir filtrando tengo que seleccionar en el siguiente combo, que puede ser cualquiera de los 6 o incluso ninguno. Porque por ejemplo la DescripcónF Prendas solo tiene Talla, que sería el 2º combo. La DescripciónF Portaherramientas tiene Material y Medida, 1º y 3º combo. Accesorios cobre tiene Material, Tipo, Grado y Ø, son 1º, 4º, 5º y 6º y así sucesivamente.

En estas 6 tablas he añadido el campo DescripciónF y están relacionadas a través de la tabla Familia con el mismo campo y además cada tabla tiene los campos necesarios que las vinculan con las tablas implicadas en cada DescripciónF.

He intentado hacerlo por criterios en consulta y no logro el resultado.

Podrían ayudarme para hacerlo por código.

2 Respuestas

Respuesta
2

Antonio, siento tener que ser el que te diga que hacer se puede hacer, que es un disparate de trabajo también.

Mira, asocia el 1 a elegir algo en un combinado y el 0 a no elegir

Sólo para darle origen de la fila al tercer combinado mira que combinaciones se pueden dar entre los dos primeros combinados

Es decir, que elijas algo en el primero, o no elijas, que elijas algo en el segundo o no elijas

Por tanto tendrías cuatro

If not isnull...and not isnull.. then

Elseii isnull... and not isnull... then

Para darle origen de la fila al cuarto combinado, mira las combinaciones

Pero es que darle origen al 6 combinado

¿Estás dispuesto a escribir todo lo anterior?

Si es así, te pongo el origen de la fila del tercer combinado y luego tú continuas

If not isnull([combinado1]) and not isnull([combinado2]) then

combinado3.rowsource="select grado from nombretabla where material like '" & me.combinado1 & "' and talla like '" & me.combinado2 & "'"

elseif is null([combinado1]) and not isnull([combinado2]) then

combinado3.rowsource="select grado from nombretabla where talla like '" & me.combinado2 & "'"

elseif not isnull([combinado1]) and isnull([combinado2]) then

combinado3.rowsource="select grado from nombretabla where material like '" & me.combinado1 & "'"

else

combinado3.rowsource="select grado from nombretabla"

end if

Respuesta
2

Veamos, si el problema está en filtrar de acuerdo con una selección múltiple de combinaciones de los 6 cuadros combinados, la solución es muy sencilla, solo has de construir un filtro de la forma explicada aquí: http://neckkito.xyz/nck/index.php/ejemplos/13-formularios/77-crear-un-filtro-multiple

La construcción del filtro la tendrás que hacer en el código de un botón (escribirías el código una sola vez) o si no tienes botón para filtrar, lo puedes poner en cada evento "después de actualizar" de los 6 combinados (6 códigos para crear filtros) o en un procedimiento a nivel de módulo y lo llamas desde cada evento "después de actualizar" de los combinados (escribirías el código del filtro una vez).

Si el problema está en cómo hacer los combos en cascada con esas peculiaridades (aunque entiendo que eso lo tienes resuelto con la respuesta que te dieron en otra pregunta), coméntalo y te indico otra forma de hacerlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas