Access - En que registro estoy

 
Vista:

En que registro estoy

Publicado por Mar (1 intervención) el 24/08/2005 10:13:28
Hola Amigos!!

Mi cuestión es la siguiente, quiero detectar dentro de un formulario con que número de registro estoy trabajando ya que desde este formulario llamo a otro que obligatoriamente me cierra el primero y luego soy incapaz de situarme en el registro con el que estaba trabajando con anterioridad.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Detectar número de registro en un formulario antes de llamar a otro formulario

Publicado por Alejandro (4142 intervenciones) el 07/06/2023 16:28:04
Hola.

Para detectar el número de registro en un formulario antes de llamar a otro formulario en Access, puedes utilizar la propiedad `Bookmark`. Esta propiedad te permite almacenar la posición actual del registro en un formulario y luego restaurarlo después de cerrar y volver a abrir el formulario.

Aquí tienes los pasos para implementar esta solución:

1. En el evento "Antes de actualizar" del formulario actual, agrega el siguiente código:

1
2
3
4
5
6
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim currentBookmark As Variant
    currentBookmark = Me.Bookmark
    DoCmd.OpenForm "NombreFormularioSiguiente"
    Forms("NombreFormularioSiguiente").Tag = currentBookmark
End Sub

Asegúrate de reemplazar "NombreFormularioSiguiente" con el nombre real del formulario al que estás llamando.

En este código, capturamos el valor de la propiedad `Bookmark` actual del formulario antes de abrir el siguiente formulario utilizando `DoCmd.OpenForm`. Luego, almacenamos ese valor en la propiedad `Tag` del formulario siguiente.

2. En el evento "Al cargar" del formulario siguiente, agrega el siguiente código:

1
2
3
4
5
6
7
8
9
Private Sub Form_Load()
    Dim previousBookmark As Variant
    previousBookmark = Me.Tag
    Me.RecordsetClone.FindFirst "CampoID = " & previousBookmark
    If Not Me.RecordsetClone.NoMatch Then
        Me.Bookmark = Me.RecordsetClone.Bookmark
    End If
    Me.Tag = Null
End Sub

Asegúrate de reemplazar "CampoID" con el nombre del campo que identifica de forma única los registros en tu formulario.

En este código, recuperamos el valor de `Bookmark` almacenado en la propiedad `Tag` del formulario siguiente. Luego, buscamos ese valor en el conjunto de registros utilizando `FindFirst` y, si encontramos el registro, establecemos el `Bookmark` del formulario siguiente en ese valor.

Finalmente, establecemos la propiedad `Tag` en `Null` para evitar problemas al abrir el formulario nuevamente.

Con esta solución, cuando llames al formulario siguiente y luego regreses al formulario anterior, se restaurará el registro con el que estabas trabajando antes de abrir el formulario siguiente.

Espero que esto resuelva tu problema. ¡Buena suerte con tu proyecto!

¡Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar