Access - Bolquear Campos Formulario Segun Condicion

 
Vista:

Bolquear Campos Formulario Segun Condicion

Publicado por Ruben D. Pineda (12 intervenciones) el 25/01/2015 15:46:46
Cordial saludo,

De nuevo necesito su colaboracion, ya que requiero que en un formulario si en un registro el campo Chek Box denominada "CERRADA" se encuentra en estado false (0) deje activos todos los campos del formulario, pero si se encuentra activado (True (1)) me desactive ciertos campos.

Escribi el siguiente codigo en el evento "Al activar registro" del formulario en el cuel necesito activar o desactivar los campos.

Private Sub Form_Current()
If [CERRADA] = 1 Then
Me.SALIDA.Enabled = False
Me.FECHA.Enabled = False
Me.ORDEN.Enabled = False
Me.PROCESO.Enabled = False
Me.DESTINO.Enabled = False
Me.DOC_AS.Enabled = False
Me.USUARIO.Enabled = False
Me.TURNO.Enabled = False
Me.Secundario26.Enabled = False
Else
Me.SALIDA.Enabled = True
Me.FECHA.Enabled = True
Me.ORDEN.Enabled = True
Me.PROCESO.Enabled = True
Me.DESTINO.Enabled = True
Me.DOC_AS.Enabled = True
Me.USUARIO.Enabled = True
Me.TURNO.Enabled = True
Me.Secundario26.Enabled = True
End If
End Sub

No se si la funcion esta mal o si estos seleccionando mal evento en que se debe ejecutar la funcion.


De ante mano agradezco su pronta colaboracion.


Atentamente,


Ruben Pineda
[email protected]
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 Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Bolquear Campos Formulario Segun Condicion

Publicado por Norberto (753 intervenciones) el 26/01/2015 10:34:39
Hola.

El problema es que True no es 1 sino -1. No obstante es mejor, cuando hagas comparaciones boolenas, usar la constantes True y False o, mejor aún, no hacer comparaciones booleanas. ¿Cómo?

Si una expresión es booleana (True/False) no es necesario hacer comparaciones. Es decir: la expresión If [Cerrada] = True Then se puede poner, simplemente If [Cerrada] Then De igual modo If [Cerrada] = False Then sería If Not [Cerrada] Then.

Por otro lado, si al darse una condición lo único que se hace es dar valores True/False a una o más propiedades, no sería necesario usar If...Then. Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
If Condición Then
    Expresión1 = True
    Expresión2 = True
    Expresión3 = True
    Expresión4 = False
    Expresión5 = False
Else
    Expresión1 = False
    Expresión2 = False
    Expresión3 = False
    Expresión4 = True
    Expresión5 = True
End If

Se podría poner así de simple:

1
2
3
4
5
Expresión1 = Condición
Expresión2 = Condición
Expresión3 = Condición
Expresión4 = Not Condición
Expresión5 = Not Condición


Volviendo a tu caso:

1
2
3
4
5
6
7
8
9
Me.SALIDA.Enabled = Not [Cerrada]
Me.FECHA.Enabled = Not [Cerrada]
Me.ORDEN.Enabled = Not [Cerrada]
Me.PROCESO.Enabled = Not [Cerrada]
Me.DESTINO.Enabled = Not [Cerrada]
Me.DOC_AS.Enabled = Not [Cerrada]
Me.USUARIO.Enabled = Not [Cerrada]
Me.TURNO.Enabled = Not [Cerrada]
Me.Secundario26.Enabled = Not [Cerrada]


También puedes inabilitar el formulario entero usando AllowEditions.

1
2
3
Private Sub Form_Current()
    Me.AllowEditions = Not [Cerrada]
End Sub

Un saludo,

Norberto.

P.S. El evento Current (Al cambiar registro) es el adecuado en estos casos.
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