
Formulario con campos en cascada
Publicado por Juan (5 intervenciones) el 27/09/2021 02:19:53
Buenas noches.
Perdón si ya hay una respuesta, llevo dos días buscando y no la encuentro (he visto combos en cascada).
Estoy haciendo una base de datos con una tabla principal de ARTÍCULOS que incluye campos relacionados con otras tablas que son los TEMAS, SUBTEMAS y SUB-SUBTEMAS a los que corresponde cada artículo y relacionadas entre ellas.
ESTRUCTURA:
Tabla Principal: ATICULOS / Campos: idArticulo, Artículo, TemaNivel1, TemaNivel2, TemaNivel3
Tablas de temas:
- TemasNivel1 / Campos: idTemaNivel1, TemaNivel1
- TemasNivel2 / Campos: idTemaNivel2, TemaNivel2, idTemaNivel1
- TemasNivel3 / Campos: idTemaNivel3, TemaNivel3, idTemaNivel2
Hay más datos en la tabla ARTICULOS, sólo pongo los necesarios para la pregunta.
Cuando creo un formulario de la tabla ARTICULOS si pincho en los combobox correspondientes de TemasNivel1, TemasNivel2 y TemasNivel3 aparecen todos los registros correspondientes a cada tabla.
Lo que necesito es que en TemasNivel2 y TemasNivel3 aparezcan sólo los registros que se correspondan con el Nivel anterior. Es decir que si selecciono un TemaNivel1, en TemasNivel2 sólo aparezcan los registros relacionados con el TemaNivel1 correspondiente. Y lo mismo con TemasNivel2 y TemasNivel3.
Y además (muy importante), que el dato quede almacenado, de forma que al cambiar de registro del formulario en cada registro aparezca lo seleccionado en él.
He probado con varias soluciones que he visto sobre combos en cascada, pero al cambiar de registro se memoriza lo seleccionado en el Nivel1 del último registro modificado y no memoriza lo seleccionado en cada registro.
Si pudierais orientarme os lo agradecería.
Esta es una de las opciones que he probado con los niveles 1 y 2
Private Sub TemaNivel1_AfterUpdate()
Otras opciones que he probado después de RowSource:
Perdón por el texto tan largo.
Perdón si ya hay una respuesta, llevo dos días buscando y no la encuentro (he visto combos en cascada).
Estoy haciendo una base de datos con una tabla principal de ARTÍCULOS que incluye campos relacionados con otras tablas que son los TEMAS, SUBTEMAS y SUB-SUBTEMAS a los que corresponde cada artículo y relacionadas entre ellas.
ESTRUCTURA:
Tabla Principal: ATICULOS / Campos: idArticulo, Artículo, TemaNivel1, TemaNivel2, TemaNivel3
Tablas de temas:
- TemasNivel1 / Campos: idTemaNivel1, TemaNivel1
- TemasNivel2 / Campos: idTemaNivel2, TemaNivel2, idTemaNivel1
- TemasNivel3 / Campos: idTemaNivel3, TemaNivel3, idTemaNivel2
Hay más datos en la tabla ARTICULOS, sólo pongo los necesarios para la pregunta.
Cuando creo un formulario de la tabla ARTICULOS si pincho en los combobox correspondientes de TemasNivel1, TemasNivel2 y TemasNivel3 aparecen todos los registros correspondientes a cada tabla.
Lo que necesito es que en TemasNivel2 y TemasNivel3 aparezcan sólo los registros que se correspondan con el Nivel anterior. Es decir que si selecciono un TemaNivel1, en TemasNivel2 sólo aparezcan los registros relacionados con el TemaNivel1 correspondiente. Y lo mismo con TemasNivel2 y TemasNivel3.
Y además (muy importante), que el dato quede almacenado, de forma que al cambiar de registro del formulario en cada registro aparezca lo seleccionado en él.
He probado con varias soluciones que he visto sobre combos en cascada, pero al cambiar de registro se memoriza lo seleccionado en el Nivel1 del último registro modificado y no memoriza lo seleccionado en cada registro.
Si pudierais orientarme os lo agradecería.
Esta es una de las opciones que he probado con los niveles 1 y 2
Private Sub TemaNivel1_AfterUpdate()
Me.TemaNivel2.RowSource = "SELECT TablaTemaNivel2.IdTemaNivel2, TablaTemaNivel2.TemaNivel2, TablaTemaNivel2.idTemaNivel1 _ FROM" & " TablaTemaNivel2 WHERE idTemaNivel1 = " & Me.TemaNivel1 & " ORDER BY TablaTemaNivel2.TemaNivel2"
Me.TemaNivel2 = Me.TemaNivel2.ItemData(0)
End SubMe.TemaNivel2 = Me.TemaNivel2.ItemData(0)
Otras opciones que he probado después de RowSource:
Me.TemaNivel2.Requery
Me.Refresh
Me.Refresh
Perdón por el texto tan largo.
Valora esta pregunta


0