Como bloqueo un registro para que no se modifique ?

Tengo un subformulario, (Detalle de Productos), que pertenece al formulario Pedidos.

Necesito que si se cumple una condición (que el producto ya fue cargado) que esta dada por un campo Si/No, no se pueda modificar.

Lo hice con un If en eventos al hacer click y recibir el enfoque (es decir si entras al campo de alguna forma y la casilla Si/No esta activa, no podes modificarlo) y funciona, pero solo la primera vez, cuando hago click por segunda vez sin cerrar el formulario, ya me permite modificarlo.

1 Respuesta

Respuesta
1

Si quieres "bloquear" el registro, debes poner el código en el evento "al activar registro" del formulario, para que no dependas de entrar o clicar en el campo.

Además, tienes que ponerlo también en el evento "después de actualizar" de tu casilla Sí/No.

Dicho lo anterior, ten cuidado con el código que usas para bloquear el registro, porque según cómo lo hagas, podrás o no modificar el campo Sí/No y por tanto, realizar o no alguna modificación en el registro.

Por ampliar un poco: si usas la instrucción Me.AllowEdits=False para "bloquear" el registro, no vas a poder cambiar directamente el valor de esa casilla (pero podrías añadir un botón para desbloquear el registro).

La otra opción, para evitar ese "inconveniente", sería ir bloqueando los campos uno a uno:

If Me.CampoSiNo=True Then
Me.Campo1.Locked=True
Me.Campo2.Locked=True
...
Else
Me.Campo1.Locked=False
Me.Campo2.Locked=False
...
End If

O bien con un bucle:

For each ctl in Me.Controls
If ctl.ControlType<>acCommandButton then
If ctl.name<>"nombreCampoSiNo" Then ctl.Locked=cbool(me.NombreCampoSiNo)
End If
Next

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas