Activar nuevo registro en subformulario después de insertar

En un formulario (fm1) tengo un subformulario (subfm1) con un listado de fichas de cliente. El formulario (fm1) también tiene un botón para dar alta a nuevos clientes que abre un segundo formulario (fm2) donde se introducen los datos y se da de alta.

Como puedo lograr que al terminar de dar alta en fm2, refrescar subfm1 y cerrar fm2, ¿el registro que se me quede activo en fm1. Subfm1 sea el recién dado de alta?

2 respuestas

Respuesta
2

Viendo que la respuesta de Icue no es exactamente lo que pides (no se va al registro nuevo del subformulario, porque no lo tiene...), te hago llegar una forma de hacerlo:

En el evento "Al cerrar" de fm2, pones este código:

Dim rst As DAO.Recordset
Dim miCliente As Long
miCliente = Me.IDCliente
Forms("fm1").subfm1.Form.Requery
Set rst = Forms("fm1").subfm1.Form.RecordsetClone
rst.FindFirst "IDCliente=" & miCliente
Forms("fm1").subfm1.Form.Bookmark = rst.Bookmark
rst.Close
Set rst = Nothing

Este código no lleva control de errores ni valido que esté fm1 abierto, porque supongo que fm2 siempre se abrirá desde fm1. Si no fuera así, puedes ponerle un control de errores o la validación del código de Icue.

Una ventaja de usar este código en vez de un DoCmd. GoToRecord,, acLast, es que si tienes tu subformulario ordenado por otro campo (por ejemplo nombre cliente en vez de su identificador), se te posicionará en el cliente recien creado, sea el primero, el último o cualquiera por el medio.

Te adjunto un ejemplillo para que lo veas en funcionamiento: http://filebig.net/files/6Qi8u88RGW 

Un saludo.


¡Gracias a ambos! 

funcionó de maravillas, pero desde el evento AfterUpdate de fm2.

Nuevamente muchas gracias.

Respuesta
2

Voy a suponer que en el formulario fm1 tienes un botón de comando que ponga, más o menos

DoCmd. OpenForm "form2",,,, acFormAdd, acDialog

En el formulario form2 ponle un botón y en sus propiedades-eventos-al hacer clic pon

DoCmd. RunCommand acCmdSaveRecord
If CurrentProject.AllForms("form1").IsLoaded Then
DoCmd. Close acForm, "form1"
DoCmd. OpenForm "form1"
DoCmd. GoToRecord,, acLast
End If
DoCmd. Close acForm, "form2"

Te lo pongo más o menos en imágenes. Supongamos que tengo un formulario

y pulso el botón. Se abre el nuevo formulario

Anoto los datos que sea y pulso el botón y

Ya se va al registro nuevo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas