Filtrar cuadro combinado, dependiendo del valor de otro cuadro combinado

Tengo dos tablas una llamada L_BENEFICIARIOS (principal) y la otra L_ALUMNOS, las cuales tengo relacionadas por un campo llamado B_NOMBRE, y por ejemplo un beneficiario tiene cargados 3 alumnos hasta ahí voy bien, después en un formulario tengo un cuadro combinado normal dependiente de los registros de la tabla y L_BENEFICIARIOS donde se muestran los valores de B_NOMBRE, lo que necesito hacer es que en un nuevo cuadro combinado me presente los alumnos que tenga capturados ese beneficiario.

1 respuesta

Respuesta
1

Ha creado una relación de tipo 1 -N entre ambas tablas, esto es, por cada registro (que se supone es único) de la tabla L_Beneficiarios hay uno o más registros en la tabla L_Alumnos, se esta utilizando como elemento común en la relación al campo B_Nombre.

Si crea una consulta basada en la tabla L_Alumnos y como filtro o condición bajo el campo B_Nombre utiliza un elemento de la tabla L_Beneficiarios esta (la consulta) devolverá solo los alumnos que tenga asociados el beneficiario seleccionado.

Lo que solicita se conoce como 'combos en cascada', es muy popular y hay ejemplos en muchas páginas Web dedicadas a Access.
Se utiliza una consulta como la antes propuesta y se le asigna como origen de datos (su 'origen de la fila') al segundo combo, se actualiza en tiempo de ejecución cada vez que se seleccione un elemento del combo actual.

Gracias por la respuesta, lo logre realizar con algunas variaciones, pero la referencia de que se conoce como combos en cascada me sirvió bastante, y encontré como me indicaste muchos ejemplos en la Web dedicadas a Access, pero tengo una pregunta, ya logro que filtre el segundo combo a partir de lo que se selecciona en el primero, lo que necesito ahora es pasar un valor de este segundo combo a un campo de un subformulario, en una pregunta anterior ya me indicaste como con DLookup y si logre hacerlo, gracias a lo que me indicaste y ahora mi problema es el siguiente: 

Te pongo un ejemplo, ya en el segundo combo tengo un listado de la siguiente manera:

NOMBRE     HIJO          COLOR_FAV

Ismael         Juan          Verde

Ismael         Pedro        Azul

Ismael        Hugo          Amarillo

Mediante DLookup llevo el registro de COLOR_FAV a un campo especifico dentro del formulario, el problema es que siempre me lleva el primero en este caso Verde, aunque seleccione de la lista el segundo y el tercero siempre lleva Verde, gracias nuevamente por el interés en mis preguntas.

Lo primero es lamentar la demora, lo causa el anormal funcionamiento del foro que no avisa de que hay respuestas recientes, supongo que pronto se restablecerá la normalidad.

No me queda claro que se asigne algo con DLookup, es una función que obtiene un dato de un conjunto -no asigna datos- esa funcionalidad la tiene otros métodos de trabajo (se puede asimilar que DLookup lee -aunque lo haga en voz alta- y por eso lo escucha quien esta atento ;-)

Según lo ultimo publicado ya se resolvió el encadenado de combos y se desea que uno de los Items del segundo combo se le asigne a ¿...?..

Un combo solo muestra uno de los datos de su origen, el item activo que por defecto es el primero, si el combo tiene mas de una columna, el dato devuelto es el de su columna dependiente (que puede ser cualquiera: la que decida el programador).

Para obtener ese dato (el valor que devolverá por defecto) no se necesita un DLookup, se referencia al combo y ...

De hecho se puede obtener el dato de cualquier columna desde VBA haciendo referencia a la propiedad Column() del combo (y también de los cuadros de lista, con los que comparte muchos detalles).

Lo habitual es que una vez que se establezca el origen del segundo (tercer, cuarto ...) combo se seleccione en el ultimo el Item deseado (un clásico click) y en ese evento se hace una 'asignación directa' a su destino final.

Si se conoce el origen y el destino se podrá indicar la forma optima de copiar ese dato.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas