Formulario y subformularios

Yo utilizo Access 2003. Estoy intentando crear una base de datos que me muestre el plan general contable con la descripción de cada cuenta. Las tablas están estructuradas de la siguiente manera:
Grupos
Subgrupos
Cuentas
Subcuentas
Tengo varios grupos. Dentro de cada grupo hay subgrupos, dentro de cada subgrupo, cuentas y dentro de cada cuenta subcuentas. Bien, todo está relacionado. El problema es cuando creo el formulario e intento filtrar la información.
He creado un formulario con tres listas desplegables. Selección grupo, en la siguiente lista sólo me salen los subgrupos correspondientes, en la siguiente sólo las cuentas y hasta aquí todo bien. Una vez filtrada la información correctamente quisiera añadir al final del formulario un subformulario que me mostrase determinados campos de la tabla CUENTAS según la cuenta que hay seleccionado en la tercera lista desplegable.
He intentado incluir subformularios, vincular el id del formulario con el campo id de la lista desplegable de cuentas. Pero no hay forma siempre me dice que no tienen vinculación. Repaso una y otra vez las relaciones y las veo bien.
En fin espero que me puedas ayudar. Si no me he explicado bien, puedo enviar imágenes.

1 respuesta

Respuesta
1
En los datos de origen del subformulario entiendo que pones la tabla "Cuentas", ¿pero cuál es el origen de los datos del formulario principal?
Para poder relacionar un campo de un formulario con otro del subformulario, ambos tienen que tener definidos una tabla/consulta de la que obtener los datos.
Si lo tienes definido para ambos y sigue sin dejarte, indícamelo y miramos qué otra cosa puede ser.
Hola, muchas gracias por tu tiempo. Bueno te explico, el formulario principal tiene el origen de datos en la tabla cuentas, al igual que el subformulario. Los tres campos con listas desplegables son independientes y están programados por visual basic según unos ejemplos que encontré por ahí en Internet. Te adjunto el código:
Private Sub CUENTA_AfterUpdate()
[SUBCUENTAS] = Null
[SUBCUENTAS].Requery
Dim CUENTA As Byte
End Sub
Private Sub SUBGRUPO_AfterUpdate()
[CUENTA] = Null
[CUENTA].Requery
[SUBCUENTAS] = Null
[SUBCUENTAS].Requery
End Sub
Private Sub GRUPO_AfterUpdate()
[SUBGRUPO] = Null
[SUBGRUPO].Requery
[CUENTA] = Null
[CUENTA].Requery
[SUBCUENTAS] = Null
[SUBCUENTAS].Requery
End Sub
Las listas desplegables están condicionadas a la selección de una para que te muestre los campos de la otra:
El desplegable GRUPO selecciona todos los grupos de la tabla GRUPOS.
El desplegable SUBGRUPO condiciona la búsqueda de los subgrupos (tabla SUBGRUPOS) cuyo campo GRUPO coincide con el desplegable anterior. Lo mismo ocurre con la tabla cuentas que tiene además los campos GRUPO y SUBGRUPO. Si se cumplen las dos condiciones entonces muestra las cuentas de ese subgrupo.
Según lo que entiendo es que debería crear una variable con el último campo seleccionado que es la cuenta y devolver esa variable como ID del subformulario para que sólo me muestre aquellos registros donde el ID de la cuenta del desplegable CUENTA coincide con la CUENTA del subformulario.
En fin no se si te he liado mucho.
De nuevo gracias por tu respuesta y por tu tiempo.
A ver si llegamos a algo, je je
Voy a suponer que el formulario general se llama "FORMULARIOGENERAL", y el subformulario "SUBFORMULARIO" (si, es que tengo mucha imaginación, je je).
Enel campo Cuenta de FORMULARIOGENERAL ponle el siguiente código:
Private Sub Cuenta_AfterUpdate()
subformulario.Requery
End Sub

Y en origen de datos del SUBFORMULARIO no pongas la tabla, sino una consulta:
Select * from CUENTAS where cuenta= [forms]![FORMULARIOGENERAL]![CUENTA].value;
Bueno, ya me dirás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas