Bloqueo, desbloqueo en un formulario

Tengo un formulario en el que quiero que por seguridad, para modificar los registros ya existentes, se de a un botón.
Además quiero que antes de cambiar de registro ciertos campos tengan que estar rellenos.

1 Respuesta

Respuesta
1
Lo tienes que poner en el código del botón:
Creas un botón y en sus propiedades en la acción Al hacer clic ---> Procedimiento de Evento ---> Picas en el cuadrado de la derecha, el de los ... y pones:
If IsNull(Form!Cuadro1.Value)=False and isNull(Form!Cuadro2.Value)=False then
doCmd.RunSql "Update......"
else
MsgBox "Los campos Cuadro1 y Cuadro2 deben estar llenos"
End If
Es decir, si por ejemplo los cuadros de texto Campo1 y Campo2 son los que no pueden estar vacíos, lo preguntas con el condicional If ... then ... end if, si no son nulos ejecutarías la sql de actualización, en caso contrario mandarías un mensaje.
Me cuentas.
Gracias por tu contestación, pero la verdad que esto es un poco complicado para mi. He creado el botón, para modificar los registros y seguido tus pasos, pero la verdad que no me sale me da un error de compilación.
Te paso lo que he escrito
Private Sub Comando70_Click()
If IsNull(Form!Cuadro1.Value) = False And IsNull(Form!Cuadro2.Value) = False Then
DoCmd.RunSQL "Update......"
End Sub
Supongo que en vez de cuadro1, deberé poner el nombre de los campos, por ejemplo Nº Incidencia y así con todos los campos que tengo.
Espero tu contestación.
Gracias
Efectivamente los llamé Cuadro1 y Cuadro2... por llamarlos de alguna forma, tendrás que poner su nombre real.
Por otro lado, empiezas un If...then pero no lo finalizas con End If
Vamos a ver, el condicional If tiene la siguiente estructura:
If <el condicional que quieras poner> then
<lo que quieres que haga si se cumple>
Else
<Lo que quieres que haga si no se cumple>
End If
Si cuando NO SE CUMPLE no quieres que haga nada:
If <el condicional que quieras poner> then
<lo que quieres que haga si se cumple>
Else
<Lo que quieres que haga si no se cumple>
End If
If <el condicional que quieras poner> then
<lo que quieres que haga si se cumple>
End If
Después tendrás que escribir la sentencia sql del actualizar la tabla, lo siento, pensé que lo sabias, me refiero a:
DoCmd.RunSQL "Update..."
El DoCmd. RunSql es un método que lo que hace es ejecutar una consulta, después (entre ") tienes que poner la sentencia sql. Para una sentencia de actualización sería:
Suponte que la tabla se llama Tabla1 y quieres actualizar los campos Campo1, Campo2 con los valores de los cuadros de texto Cuadro1 y Cuadro2, la sql sería:
DoCmd.runSql "Update Tabla1 Set Campo1='" & form!Cuadro1.Value & "', Campo2='" & Form!Cuadro2.Value & "'"
Me cuentas.
Hola de Nuevo, ya he conseguido que el botón me avise cuando algún campo no este relleno, cuando pincho sobre el botón que he creado, pero también necesito que no me deje cambiar de registro hasta que esos campos estén también rellenos.
O si es más sencillo que la base de datos este bloqueada y que solo se puedan rellenar datos cuando se pinche en un botón y que al cambiar de registro la BBDD siga estando bloqueada.
Gracias
Hola de nuevo, ya he conseguido bloquear el formulario y desbloquearlo con un botón y que al cambiar de registro se vuelva a desbloquear.
Lo que sucede es que este formulario tiene un subformulario y no se como hacer para que haga lo mismo con el subformulario.
¿Me puedes ayudar?
Gracias
Se me olvidó decirte como he hecho lo del bloqueo
Al cargar
Private Sub Form_DataSetChange()
Private Sub Form_Load()
Me.AllowEdits = False
End Sub
Al activar registro
Private Sub Form_Current()
Me.AllowEdits = False
End Sub
Al hacer clic en el botón
Private Sub Comando64_Click()
Me.AllowEdits = Not (Me.AllowEdits)
End Sub
Se me ocurre que podrías poner el formulario visible o no.
Form!NombreSubformulario.Visible=True
Estoy escribiendo de memoria y ahora no me acuerdo si al referirte al subformulario le tienes que decir que es un formulario, no tratarlo como otro control cualquiera:
Form!NombreSubformulario.Form.Visible=True 
Me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas