Formulario que se abra desde otro formulario con Id de éste último

Tengo un formulario que se usa para entradas y salidas (movimientos) de un expediente que lo abro desde un formulario principal mediante un Comando (botón). El problema es que me toma el Id pero sólo para ingresar el primer movimiento, para el segundo ya no me guarda ese Id. Si guarda el dato en la tabla pero sin Id.

Son sólo dos tablas, Principal con Id autonumérico y Movimientos con Id número. Esto es porque para cada Id principal puede haber muchos Id Movimientos.

Pienso que me falta poco pero no logro finalizarlo. Adjunto el evento que tengo en "al hace click" del Comando

Private Sub CdoFechas_Click()
Dim elId As Long
Dim miFiltro As String
Dim hayRegistros As Variant
elId = Nz(Me.Id, 0)
If elId = 0 Then Exit Sub
hayRegistros = DLookup("Id", "Movimientos", "Id=" & elId)
If IsNull(hayRegistros) Then
DoCmd.OpenForm "Movimientos", acDesign, , , , acHidden
Forms!Movimientos.DefaultView = 0
DoCmd.Close acForm, "Movimientos", acSaveYes
DoCmd.OpenForm "Movimientos", , , , acFormAdd
Forms!Movimientos.Id.Value = elId
Else
DoCmd.OpenForm "Movimientos", acDesign, , , , acHidden
Forms!Movimientos.DefaultView = 1
DoCmd.Close acForm, "Movimientos", acSaveYes
DoCmd.OpenForm "Movimientos"
miFiltro = "Id=" & elId
With Forms!Movimientos
.Filter = miFiltro
.FilterOn = True
End With
End If
End Sub

1 respuesta

Respuesta
2

Creo que es más sencillo. Vamos a suponer que estás en el formulario A y quieres abrir el formulario B y que en el campo Idloquesea de este último te ponga el valor del IdPepe del formulario A.

En un botón, o en cualquier otro evento puedes poner, por ejemplo,(aunque se puede hacer de 3.000 formas distintas)

DoCmd. OpenForm "formularioB",,,, acFormAdd, acDialog

De forma que cuando pulses el botón o lo que sea, se abrirá el formulario B en vista diálogo y en un registro nuevo

Y en el formulario B, en el evento Al activar registro crea un procedimiento de evento y pon

If currentproject.allforms("formularioA").isloaded then

idloquesea=forms!formularioA!idPepe

end if

Es decir, que cuando se abra el formulario B comprobará si está abierto el formulario A(que si que lo está), y entonces te pondrá en el cuadro de texto Idloquesea el valor que figura en el cuadro de texto Idpepe del formularioA

Muchas gracias Icue, funciona pero no como necesito. Es decir, el formulario B es un formulario contínuo en el que quiero que se vea el historial (los datos sucesivos que se han ido introduciendo a medida que pasa el tiempo). Ya que en el formulario A (principal) hay cuadro de texto que deja el último dato ingresado. Pero si ese dato lo voy a cambiar, que al abrir el formulario B se vea los sucesivos datos que se han ingresado. 

Puedo enviarte la BD que es muy pequeña y al verla te darás cuenta bien lo que quiero lograr

Independientemente de que da igual que sea continuo o único, ya que lo que mira es que si está abierto el A, no sé si tienes mi correo, pero por si no es [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas