¿Cómo se puede añadir subformularios a Access?

He creado a través del asistente de formularios de Access un formulario principal con dos subformularios,

Pero requiero añadir más subformulario y el asistente no lo permite, he intentado añadirlo pero el problema es que no funcionan de la misma forma. Es decir el primer subformulario depende del formulario principal y el segundo subformulario depende del primer subformulario.

Entonces necesitaría añadir subforms que fueran dependientes en escala. Que cuando pulse una opción de subformulario 2 el 3 filtre según esa opción.

2 respuestas

Respuesta
2

Primero, bendito tú que en la pantalla te caben un formulario con dos subformularios. Mi ordenador es un portátil y ya bastante que entre un formulario con un subformulario.

Segundo, te voy a poner un ejemplo. Ya es difícil para un padre pelear en casa con sus hijos( y las nueras, no nos olvidemos de ellas), como para tener que pelear con nietos, bisnietos, etc. ¿No sería más sencillo hacer un formulario con un subformulario y en cualquier evento del subformulario decirle que abra, en vista diálogo, "filtrado" el subsubformulario, y en el subsubformulario lo mismo, y así hasta...?. Equivaldría a que el nieto se pelee con sus hijos, el hijo con los suyos y el padre con los hijos.

Te adjunto una imagen de las relaciones de que tengo del Access y tengo la necesidad de que el usuario en el formulario pueda visualizar y acceder a cada uno de los apartados. La verdad que no se  como generarlo al 100 % si tienes alguna alternativa te lo agradeceré.

muchas gracias

Vamos a suponer que tengo una tabla Paises, otra tabla Ciudades, otra tabla Empresas y otra tabla Contactos, de forma que un país puede tener varias ciudades, una ciudad varias empresas, una empresa varios contactos...

Con la tabla Paises y la tabla Ciudades hago un formulario con subformulario

Si hago clic en Idciudad( pero podría ser en cualquier otro evento)

Me abre, en vista diálogo, el formulario Empresas para que anote(o compruebe) las empresas que hay en Berlín.

Si hago clic en idempresa

Me abre el formulario Contactos, en vista diálogo, y superpuesto al anterior, de esa empresa para anotar o comprobar.

En el evento Al hacer clic( pero podría ser en cualquier otro evento) del control Idciudad del subformulario Ciudades le digo

DoCmd.OpenForm "empresas", , , "idciudad=" & Me.IdCiudad & "", , acDialog

En el evento Al hacer clic del control Idempresa del subsubformulario Empresas le digo

DoCmd.OpenForm "contactos", , , "idempresa=" & Me.IdEmpresa & "", , acDialog

Y así hasta...

Respuesta
2

Aunque Icue ya te respondió satisfactoriamente, permíteme indicarte una forma en la que puedes hacer subformularios en cascada con este ejemplo: http://www.filebig.net/files/GmeiUbF5wq

La BD es muy simple, con esta estructura:

El formulario TPaises tiene un subformulario dependiente (TRegiones). Si te fijas en sus propiedades, verás que está relacionado con el formulario principal por los campos IDPais (de TPaises,) como campo principal y Pais (de TRegiones) como campo secundario.

El formulario TPaises tiene a su vez otro subformulario (TCiudades) que dependerá del valor seleccionado en el subformulario TRegiones. En este caso los campos relacionados son IDRegion (del subformulario TRegiones) como principal y Region (de TCiudades) como secundario.

Fíjate en la notación del primero: [TRegiones]!Form![IDRegion], es decir, el nombre del subformulario (TRegiones), la palabra Form, para indicar que se trata de un formulario, y el nombre del Campo (IDRegion)

Además, para que el "invento" funcione, en el evento "al activar registro" del subformulario TRegiones, hay que programar un pequeño código:

Private Sub Form_Current()
On Error Resume Next
Me.Parent![TCiudades].Requery
End Sub

que no hace otra cosa que decirle al subformulario TCiudades que se recargue para mostrar las ciudades correspondientes a la región seleccionada.

Y siguiendo este esquema tan simple (relacionando los campos de un subformulario con los del anterior y programando ese evento), podrías añadir a tu formulario los subformularios en cascada que necesites.

Un saludo.


Víctor, en el ejemplo verás que el código es diferente al que indico en mi respuesta, eso es porque el ejemplo es de hace bastantes años y lo hice de otra forma, pero si lo dejas tal cual indico en la respuesta funciona perfectamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas