Bloquear campo de un registro al seleccionar check box

Alguien por favor me eche una mano.

Tengo un formulario continuo en donde selecciono el proceso con un check box, al seleccionarlo como verdadero requiero que me bloquee unos campos específicos del registro o al desmarcarlo necesito que los vuelva a activar

He estado buscando varias opciones, pero en todas me bloquea el campo de todos los registros más no del que estoy trabajando.

He usado varios eventos pero ninguno m ha funcionado. El ultimo que use fue el siguiente en el evento al activar registro

Private Sub Form_Current()
If Mad_cort_na = False Then 'check box
Me.Mad_cort_i.Enabled = True 'campo
Else
Me.Mad_cort_i.Enabled = False 'campo
End If
End Sub

2 respuestas

Respuesta
1

En los formularios continuos los objetos independientes repiten su estado/valor para todos los registros.

El Check Box (Mad_cort_na) como elemento independiente puede tener tres estados Si/No/Sin inicializar (símil de Null)
Si es el primer registro al que se accede, el valor es probable que sea un NULL, tras adjudicarle un valor dará el resultado esperado.
(Pero el evento Current pertenece al pasado y ya no será aplicable al registro actual).
La solución esta en que además de en el evento Current (para los siguientes registros) se evalúe en el evento del propio Check para que el cambio se aplique al registro actual.

Si Mad_cort_na (tras inicializarlo en el evento LOAD del formulario), sus valores solo pueden ser True/false, la asignación se puede simplificar:

Me.Mad_cort_i.Enabled = Me.Mad_cort_na  

O la alternativa (invierte el valor que devuelve el objeto)

Me.Mad_cort_i.Enabled = NOT Me.Mad_cort_na  

Muchas gracias, he probado el código pero me sigue bloqueando todos los registros. Sin embargo lo puedo aplicar a otra parte que lo tengo con un único formulario.

Muchas gracias por tu ayuda

Esta comentado en la primera línea de mi anterior respuesta: los objetos independientes repiten el valor para todos los registros.
Si se desea conservar el valor, se tendrá que añadir a la tabla un campo mas (y será dependiente).
Que afecte a todos es una ilusión óptica, los formularios continuos solo interactúan con el registro activo -en la practica solo tienen un registro, el activo- cuando por cualquier medio se seleccione otro: el seleccionado se convierte en el activo y el otro pasa 'al grupo de ocupar espacio visual'.

Lo que no tengo claro es lo que se intenta lograr:

Si lo que se pretende es que al cambiar de registro este protegido contra modificaciones y que para permitirlas el CheckBox este a TRUE, bastará asignar al CheckBox el valor False en el evento Current (con la excepción de no ser un registro nuevo), la condición seria algo así:
Private Sub Form_Current()
Me.Mad_cort_na = Me.NewRecord
End Sub

Con ello se logra automatizar el valor, visualmente se repetirá en todos los registros.

Si no se desea ese efecto estético, hay alternativas como la de poner el CheckBox en la cabecera del formulario continuo.

Respuesta
1

La respuesta que le dan es incoherente desde todo punto de vista. Esto lo puede solucionar con FORMATO CONDICIONAL. Ubíquese en cada campo que deba ocultar, oprima el botón derecho y elija Formato Condicional.

Haga clic siguiendo la flecha para habilitar / deshabilitar

En el ejemplo asumo que [opcion] es el nombre de la casilla de verificación.

Disculpe escribí "Ocultar" y es "Deshabilitar"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas