Si tengo la tabla Internos
Y la tabla Dietas, que como puedes ver está vacía.
Con ambas hago los respectivos formularios. Al primero, sólo le digo que sea emergente, de modal nada de nada, y al segundo no le digo absolutamente nada. Cuando abro el formulario Internos
Cuando pulso el botón, como en ese momento no tiene ninguna dieta asignada, me abre el formulario Dietas, en un registro nuevo, y en el control IdInterno me pone el que figura en ese momento en el formulario Internos
Aunque no lo parezca el otro está abierto y detrás. Escribo lo que tenga que escribir
Más adelante, si me voy a ese formulario Internos
Y pulso el botón Abrir Dietas, como la tabla Dietas ya tiene registros asociados a ese Interno
El código del evento Al hacer clic del botón es
Private Sub Comando5_Click()
If Nz(DCount("*", "dietas", "idinterno=" & Me.IdInterno & "")) = 0 Then
DoCmd.OpenForm "dietas", , , , acFormAdd, acDialog
Else
DoCmd.OpenForm "dietas", , , "idinterno=" & Me.IdInterno & "", , acDialog
End If
End Sub
Es decir, primero cuéntame si la tabla Dietas tiene registros asociados a ese interno. Si no los tiene ábreme en vista diálogo el formulario Dietas en un registro nuevo y por el contrario, si los tiene ábreme el formulario Dietas con aquellos registros que tengan el mismo IdInterno que el que figura en ese momento en el formulario Internos.
Por otro lado, para que el control Idinterno del formulario Dietas "coja" el valor de Idinterno del formulario Internos, en las propiedades del formulario Dietas-Eventos-Al activar el registro le pongo
Private Sub Form_Current()
If CurrentProject.AllForms("internos").IsLoaded Then
IdInterno = Forms!internos!IdInterno
End If
End Sub
O sea, que siempre que abras el formulario Dietas, en el control Idinterno te aparecerá el valor de IdInterno de Internos.