Access - Bloqueo de registro - Timer

 
Vista:

Bloqueo de registro - Timer

Publicado por Juan (37 intervenciones) el 25/10/2006 11:55:10
Hola,
tengo un formulario donde acceden varios usuarios. La propiedad del formulario Bloqueo de registro está como registro modificado, por lo que evito que dos usuarios editen el mismo registro.

Ahora bien, el formulario actualiza unos campos mediante un form_timer. Y debido a esto hace que me salga un error cuando un usuario intenta acceder al formulario que ya tiene abierto otro, ya que el timer actualiza unos campos

Veis alguna solución a este problema?
Hay alguna manera de detectar cuando Access ha bloqueado el registro?

Muchas gracias
Juan
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

Solución para evitar errores en formularios compartidos con registro bloqueado

Publicado por Alejandro (4142 intervenciones) el 27/07/2023 17:06:45
Para evitar el error que ocurre cuando varios usuarios intentan acceder al mismo formulario mientras se actualiza mediante el `Form_Timer`, puedes implementar una solución que detecte si el registro está bloqueado antes de realizar la actualización. A continuación, te presento una posible solución para abordar este problema:

Paso 1: Verificar si el registro está bloqueado
1. Agrega un campo oculto al formulario, por ejemplo, llamado "RegistroBloqueado". Este campo se utilizará para almacenar la información de si el registro está bloqueado o no.
2. En el evento `Form_Timer` del formulario, antes de realizar las actualizaciones, puedes verificar si el registro está bloqueado utilizando la propiedad `RecordsetClone` y la función `EditMode`.

1
2
3
4
5
6
7
8
9
10
Private Sub Form_Timer()
    If Not Me.RecordsetClone.EOF Then
        If Me.RecordsetClone.EditMode = dbEditInProgress Then
            Me.RegistroBloqueado = True
        Else
            Me.RegistroBloqueado = False
            ' Aquí realiza las actualizaciones en los campos del formulario
        End If
    End If
End Sub

Paso 2: Mostrar un mensaje al usuario en caso de registro bloqueado
1. En el evento `Form_Current` del formulario, puedes mostrar un mensaje si el registro está bloqueado y deshabilitar la edición de los campos.

1
2
3
4
5
6
7
8
Private Sub Form_Current()
    If Me.RegistroBloqueado = True Then
        MsgBox "El registro está bloqueado por otro usuario. Por favor, espere unos momentos antes de editar.", vbInformation, "Registro bloqueado"
        Me.AllowEdits = False
    Else
        Me.AllowEdits = True
    End If
End Sub

Con esta solución, cuando un usuario accede al formulario y otro usuario ya lo tiene abierto y está realizando actualizaciones, el segundo usuario recibirá un mensaje indicando que el registro está bloqueado y se deshabilitará la edición de los campos para evitar conflictos.

Espero que esta solución te ayude a evitar errores cuando varios usuarios acceden al formulario al mismo tiempo. ¡Buena suerte!
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