Botón alternar para modificar/bloquear registros

Lo que quiero hacer alternar entre dos opciones (mediante un botón alternar), donde:
Opción 1: Sea la opción predeterminada donde al abrir el formulario o cambiar de registro, ésta se active. Se tiene que evitar la edición del registro mostrado, evitar eliminación del registro, crear un nuevo registro. Es decir solo sea de lectura los datos del formulario. El botón debe mostrar una etiqueta que diga: Edición bloqueada.
Opción 2. Se tiene permitir la edición del registro en el formulario, la eliminación y la adición de un nuevo registro. Y se debe mostrar una etiqueta que diga: Edición activada.
Al cerrar o perder el enfoque del formulario se deben guardar los cambios y bloquear su edición.
Respuesta
1
Lo primero una cuestión, Si predeterminado quieres que no se pueda añadir nada en el formulario... ¿Por qué un botón alternar?. Me explico, me parece más fácil poner en las propiedades del formulario que no se pueda añadir, modificar, ni eliminar ningún registro y luego en un botón de comando hacer que se pueda una vez el usuario haya hecho click
Me.AllowAdditions = True
Me.AllowEdits = True
Un saludo y ya comentas.
Mi Foro
Mi web

1 respuesta más de otro experto

Respuesta
1
Partamos de que el control se llama altEdit. Si no está pulsado (False) es la opción 1 --> Edición bloqueada. Si está pulsado (True), opción 2 --> Edición activada
Anotación: no puedes utilizar la propiedad AllowEdits (permitir ediciones) ya que bloquea cualquier cosa al estar en False... incluso este botón de alternar. Deberás utilizar la propiedad Locked de cada control.
Tengamos entonces una función en el formulario para realizar las acciones solicitadas.
Private Function fntEdita(blnPermiteEdicion As Boolean)
' Empezamos bloqueando o no los controles
Me!uncontrol.Locked = blnPermiteEdicion
' .... toda la lista de controles igual
Me.AllowDeletions = blnPermiteEdicion
Me.AllowAdditions = blnPermiteEdicion
Me!altEdit.Caption = IIf(blnPermiteEdicion, "Edición activada", "Edición bloqueada")
End If
En el evento Después de actualizar del botón de alternar llamaremos a la función pasando como argumento el valor del control:
Private Sub altEdit_AfterUpdate()
fntEdita Me!altEdit
End Sub
Finalmente, en cada cambio de registro, desactivamos:
Private Sub Form_Current()
Me!altEdit = False
fntEdita Me!altEdit
End Sub
Indicarte asimismo que, al cerrar un formulario, así como al cambiar de registro, los cambios de guardan automáticamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas