Debe utilizar la propiedad PARENT, pero sería bueno subiera una imagen para no improvisar con código que lo pueda es confundir. De todas maneras preparé este ejemplo.
Formulario principal
Hago en Calcular DURASNOS y obtengo:
Subformulario
Ingreso el Vr Unitario y la Cantidad, automáticamente se actualiza el Total. Para el campo Total fijo como origen del control como muestra la imagen:
Esto permite que al cambiar cualquier valor de los campos se actualice el Valor Total.
Al cerrar el Formulario regreso al formulario principal y me actualiza la cantidad y el valor de los DURASNOS
CÓDIGO DEL BOTÓN CALCULAR FORMULARIO PRINCIPAL
Private Sub btnCalcular_Click()
DoCmd.OpenForm "frmsubcalcular", acNormal, , , , , Me.articulo
End Sub
Observe como paso por argumento el nombre del artículo, esto para utilizarlo como título en el subformulario.
CÓDIGO DEL SUBFORMULARIO
Option Compare Database
Option Explicit
Dim mForm As Form
Private Sub Form_Close()
If Me.ctlTotal > 0 Then
mForm!cantidad = Me.ctlCantidad
mForm!valor = Me.ctlTotal
mForm.Recalc
End If
End Sub
Private Sub Form_Open(Cancel As Integer)
Set mForm = Screen.ActiveForm
Me.Caption = "CALCULANDO PRECIO " & Me.OpenArgs
End Sub
Observe como defino a nivel de formulario la variable donde almaceno el nombre del formulario principal.
En el evento Al abrir almaceno en la variable mForm el nombre del formulario activo en el momento de abrir, es decir, el formulario principal. Esto me permite de una manera practica hacer referencia a las propiedades del formulario.
Asigno al título del formulario el nombre pasado como argumento, en este caso, el nombre del producto.
En el evento Al cerrar, actualizo el formulario principal, siempre que al campo ctlTotal sea mayor que cero.
Si quiere el ejemplo lo puede solicitar a [email protected], favor en el asunto hacer referencia a la consulta.