Access 2007: Hacer referencia a un subformulario dentro de otro subformulario

Tengo un pequeño problema, no se si se debe a la versión de Access o a que, ya que es algo que he hecho un montón de veces en Access 2003 y no he tenido problemas.

Tengo un Formulario (Formulario_Expedientes) que contiene un subformulario (Subformulario_Inventario), a su vez dentro de este subformulario tengo otro subformulario (Subformulario_Volumenes)

Quiero cambiar el valor de un cuadro de texto en este subformulario con el siguiente comando:

Forms![Formulario_Expedientes]![Subformulario_Inventario].Form![Subformulario_Volumenes].Form![Texto3] = Var_Total_Volumen

Sin embargo, me da error:

"Se ha producido el error '-2146500594 (800f000e)' en tiempo de ejecución:

Error en el método 'Form' de objeto '_SubForm'"

Respuesta
3

Jon: Suponiendo que el Var_Total_Volumen lo tienes en el Formulario Principal, y que ese código lo pones en algún evento del mismo, quita el Form intermedio de modo que te debe quedar algo así.

Forms![Formulario_Expedientes]![Subformulario_Inventario]![Subformulario_Volumenes].Form![Texto3] = Me.[Var_Total_Volumen]

Un saludo >> Jacinto

Gracias por tu respuesta, pero tengo la duda de si esto es así por la versión. Porque en versiones anteriores se usaba el form intermedio, ¿No?

Jon:Interpreto que te ha funcionado el código que te he enviado.

La verdad es que siempre que me he referido a Formularios insertados como sub formularios lo he hecho así. Hace mucho que no uso la versión 2003, pero si lo has usado y funciona, poco tengo que decir. Un saludo >> Jacinto

Buenas Jacinto, siento tener que decirte que a pesar que quitar "Form!" intermedio, sigue dándome el mismo error.

No se si has entendido bien la estructura: Es un formulario principal denominado Formulario_Expedientes, dentro de este formulario tengo un subformulario denominado Subformulario_Inventario y dentro de este subformulario está el subformulario Subformulario_Volumenes.

Var_Total_Volumen es una variable con un cálculo de una suma que la calculo previamente

Bueno Jon: Creo haberlo entendido y para asegurarme, he añadido un SubForm a un SubForm, tal como te indico en la figura.

En el evento al cargar del Formulario Principal FPresupuestos, pongo éste código>>

Private Sub Form_Load()
Forms!FPresupuestos!FDetallePresupuestos!FDetPptosSubSub.Form!FechaSubSub = Me.FechaPpto
End Sub

Y el resultado como era de esperar>>

Repasa los Nombres de Controles, porque es posible que el control que contiene al o a los SubFormularios, tenga nombres distintos. Es todo lo que se me ocurre. Un saludo >> Jacinto

¡Gracias! 

Me ha funcionado correctamente

Perfecto Jon. Me alegra que hayas podido resolver esa dificultad, y si valoras la respuesta pues estupendo. Un saludo >> Jacinto

2 respuestas más de otros expertos

Respuesta
2

Chico, pues la instrucción la veo bien

Formularios! [NombreForm]! [Nombresubformulario]. Formulario! [Nombresubsubformulario]. Formulario! [nombrecontrol]

Mira, si tengo un formulario 

Y pulso el botón

El código del botón es

Forms!expedientes!Provincias.Form!ciudades.Form!texto4 = UnCampo

Si, eso pienso yo, pero no consigo hacerlo funcionar

Lo único que se me ocurre es que en vista diseño del formulario hagas clic sobre el primer subformulario y mires en sus propiedades-Otras-Nombre si realmente se llama así, y lo mismo en el subformulario del subformulario. Pero como te dije, la instrucción la tienes bien.

Respuesta

Tengo un problema y es que tengo un formulario Oferta (tabla) y dentro un subformulario Oferta_detalles (una tabla aparte vinculada por Id_Oferta) donde pongo los ítems de la oferta. Pero quiero anidar un subformulario llamado Oferta_detalles_deglose (tabla aparte vinculada por Id_Oferta_detalles) al subformulario Oferta_detalles, con el objetivo de detallar cada item por separado si es necesario.

Ejemplo: Tengo puesto "PC Completa" (en Oferta_detalles) pero quiero que abajo de este form pueda llenar lo que tiene la "PC Completa". No se si me hago entender.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas