Actualizar el formulario y volver o seguir en el registro actual

Es una pregunta para Sveinbjorn El Rojo

Es una pregunta para Jacinto Trillo

Hola

Me gustaría actualizar los registros de mi formulario "FormLibros" pero manteniéndome en el registro actual o bien volviendo a él.

Lo he intentado con el me. Requery pero me saca del registro actual y me lleva al reg. 1 (claro está si no estoy en el registro 1 ya como registro actual)

Tengo 4 opciones que me permiten actualizar el form y mantenerme o volver al registro actual pero no sé cuál puede ser la óptima luego y que me dé menos problemas...

1º OPCIÓN:

Me. Refresh

O bien

DoCmd. RunCommand acCmdRefresh
------------------------------------------------------------------------------------

2º OPCIÓN:
Dim Bk As Variant
Bk = Me.Bookmark
Me.Requery
Me.Bookmark = Bk
------------------------------------------------------------------------------------

3º OPCIÓN:
Dim CrId As Integer
CrId = Me.CurrentRecord
Me. Requery
DoCmd. GoToRecord acDataForm, Me. Name, acGoTo, CrId
------------------------------------------------------------------------------------

4º OPCIÓN:
Form_FormLibros.Recalc
-------------------------------------------------------------------------------------
¿Cuál de éstas opciones o bien otra alternativa me recomendáis como la preferida por vosotros para lo que quiero ya sea porque consume menos recursos o por otras razones?

1 Respuesta

Respuesta
2

Rafa: Yo con lo primero que probaría es con Me. Refresh

Para ese tipo de conceptos mira éste enlace.

http://aulaclick-access.blogspot.com/2011/12/que-metodo-usar-refresh-o-requery-en-un.html 

Mis saludos >> Jacinto

Rafa: Al final has probado el Me. ¿Refresh?

Tienes que ponerlo en

Private Sub BtnQuitaEspacios_Click()
Me.Refresh
Call QuitaEspaciosIniFin("LIBROS", "AñoMasISBN")
End Sub

Ya me contarás. Saludos >> Jacinto

Hola Jacinto

Sí, lo acabo de probar y cumple su cometido pero por alguna razón que tal vez tú puedas explicarme el me.requery, al menos en mi PC se ejecuta más rápido...

Un ejemplo si tengo espacios en varios registros y ejecuto:

Private Sub BtnQuitaEspacios_Click()
Me.Requery
Call QuitaEspaciosIniFin("LIBROS", "AñoMasISBN")
End Sub

este proceso elimina los espacios de los registros már rápido que si hago lo mismo con me.refresh, al menos en mi PC.

El único problema como comentamos es que el dichoso me.requery me saca del registro y me lleva al reg. 1 lo cual es un engorro.

Prueba tú con los 2 métodos (me.requery y me.refresh) y me comentas si la acción de eliminar espacios se ralentiza en uno u otro caso. Pero crea por favor varios registros con espacios y desde un reg. que no sea el 1 apreta el botón.

Ya me dices... Un saludo

Rafa: La verdad es que en el Pc que yo tengo, no se apreciar la diferencia.

Para sustituir ambos, si quieres prueba éste Procedimiento Publico. Ponlo en un Módulo Estandar.

Public Sub GuardaYVuelve()

If Frm.CurrentRecord = 1 Then
Frm.Requery
Else
DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acNext
End If

End Sub

y para llamarlo>>

Private Sub BtnQuitaEspacios_Click()
Set Frm = Me
Call GuardaYVuelve
Set Frm = Nothing

Call QuitaEspaciosIniFin("LIBROS", "AñoMasISBN")
Me.Refresh

End Sub

Este te soluciona los problemas del Requery, e imagino que no irá lento.

Yo tampoco noto la diferencia. Saludos >> jacinto

Muchas gracias Jacinto

Funciona muy bien!!

Aunque parezca mentira y no tenga lógica ninguna esta última solución que me das me va más rápido que las otras...

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas