Habiliar un cuadro de texto en un formulario

Tengo un formulario continuo, en access 2033, y necesito activar / desactivar los cuadros de textos mediante un checkbox. Cuando tildo el check, los cuadros de textos deben bloquearse, para no permitir la modificación de los datos que están ingresados. El check, debe permitir bloquear un registro determinado, dejando habilitados todos los que no se encuentren tildados.

1 respuesta

Respuesta
1
Lamento comentarte que lo que estás pidiendo no se puede hacer. Aunque tú puedas ver diversos registros si pones el formulario en vista diseño verás que sólo hay "una línea". Es por ello por lo que si el checkbox es independiente está controlando todos los registros del formulario (se te bloquearán todos o se te desbloquearán todos).
Otra cosa es que me digas que en tu tabla tienes un campo de tipo si/no, y que es el origen del checkbox que comentas. En ese caso, al estar ligado a cada registro de manera individual, sí podrías programar el resto de campos para evitar modificaciones (aunque según el número de campos el proceso podría ser algo laborioso).
Pues eso... si tu formulario se ubica dentro del primer sistema poca cosa se puede hacer, más que adaptarlo al segundo sistema. Y si lo adaptas, o efectivamente tienes ese campo sí/no, me lo comentas y te explico cómo proceder al bloqueo.
Ya me dirás cosas.
Gracias por tu pronta respuesta. Es fácil cambiar el formulario para que aplique el segundo caso. Aguardo tus comentarios de como seguir. Saludos.
El sistema no es muy elegante por culpa de que utilizas el formulario en vista formularios continuos, pero sí es efectivo. Lo que tienes que hacer en este caso es:
1.- Añadido el campo si/no, que yo llamaré [Bloqueo], en la tabla, y cuyo valor por defecto será 0, lo añades también en tu formulario.
2.- Con el formulario en vista diseño deberás sacar las propiedades de cada uno de los textbox. Te vas a la pestaña Eventos -> Al recibir el enfoque. Si te sitúas en el espacio en blanco a la derecha verás que te aparece un pequeño botón de puntos suspensivos. Si haces click sobre él te aparecerá una ventana. Ahí le dices que quieres generar código.
3.- Se te abrirá el editor de VB con dos líneas por defecto (Private Sub... y End Sub). Esas líneas no debes tocarlas. En medio de ellas escribes el siguiente código:
...
Private Sub ...
If Me.Bloqueo.Value = True Then
Me.Bloqueo.SetFocus
End If
End Sub
...
En el código tú debes cambiar [Bloqueo] por el nombre del nuevo campo que hayas creado.
Lo dicho. Debes copiar-pegar este código en todos los textbox que tengas en el formulario.
Ya me dirás qué tal.
Funcionó de maravillas. Ya que estamos en el tema, aprovecho para consultarte, como bloquear luego el checkbox "bloqueo", para que una vez que está tildado, no lo puedan destildar, a menos de que se ingrese una contraseña...
Aguardo tu respuesta.
Saludos...
Sacas las propiedades del checkbox y te vas a la pestaña Eventos->Al hacer click, y le generas este código:
...
Const pass As String = "pass"
Dim userpass As String
Dim vBloqueo As Boolean
vBloqueo = Me.Bloqueo.Value
If vBloqueo = False Then
userpass = InputBox("Introduzca contraseña", "PASSWORD", "...")
If StrPtr(userpass) = 0 Then
Me.Bloqueo.Value = True
Exit Sub
End If
If userpass = pass Then
Exit Sub
Else
MsgBox "Password incorrecto", vbCritical, "MAL"
Me.Bloqueo.Value = True
End If
End If
...
En la primera línea es donde debes establecer la contraseña. Si quisieras poner, por ejemplo, lostris79, deberías escribir:
Const pass As String = "lostris79"
Ten en cuenta que el campo yo lo he seguido llamando [Bloqueo]. Tú debes cambiar ese nombre en el código si tuvieras otro nombre.
Ya me dirás qué tal.
Mil gracias! Funcionó de una,. Excelente explicación. Espero que no te moleste, pero ya te agendé como "favorito", por si tengo más dudas... Ya que mi base de datos crece más rápido que mis conocimientos :)Saludos...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas