Problemas al Bloquear campos en access

Tengo problemas al Bloquear campos ya qué tengo un botón que al darle guardar imprimir se llama el botón bloquea los campos y abre el informe

Tengo un bonito de modificar qué si funciona al darle me pide contraseña se pone y desbloqueo los campos

El problema que tengo es que los campos se desbloquean al salir del formulario y bomver a entrar están desbloqueados

El código es el siguiente

Código del botón imprimir

Private Sub Comando54_Click()

DoCmd.RunCommand acCmdRefresh

Me.CambiosHCliente.Enabled = False

Me.CambiosHnumFAC.Enabled = False

Me.CambiosHVendedor.Enabled = False Me.CambiosHFechFac.Enabled = False

Me.CambiosHfecha.Enabled = False

Me.Cambios Hobser.Enabled = False

Me.Subformulario_Cambios D.Locked = True

Me.Subformulario CambiosA.Locked = True

On Error GoTo Err Comando54_Click

Dim Stdocname As String

If MsgBox("CAMBIO CREADO CON EXITO!" & vbCrLf & __ "Desea Imprimir el Cambio?", vbYesNo+vbInformation + vbDefaultButton1, "Imprimir

Cambio") = vbYes Then

Stdocname="CambiosH"DoCmd.OpenReport Stdocname, acPreview,, "CAMBIOSHDOC= " & Me.CambiosHDoc

End If

Exit Comando54_Click:

Exit Sub

Err_Comando54 Click:

MsgBox Err.Description

Resume Exit Comando54_Click

END sub

............. 

Y este es el del botón de modificar 

Private Sub Comando77_Click()

If InputBox("Introduzca La Contraseña:") <> "2022" Then

Cancel = True

End If

Me.CambiosHCliente.Enabled = True

Me.CambiosHnumFAC.Enabled = True

Me.CambiosHVendedor.Enabled = True

Me.CambiosHFechFac.Enabled = True

Me.Cambios Hfecha.Enabled = True

Me.CambiosHobser.Enabled = True

Me.Subformulario_Cambios D.Locked = False

Me.Subformulario_CambiosA.Locked = False

End Sub

2 Respuestas

Respuesta

Se deberá bloquear en el evento 'al cambiar de registro' condicionándolo a que no sea un registro nuevo (que necesitara 'nacer' desbloqueado').

Repetir el mismo código mas de una vez (y aquí son tres por lo menos) se puede evitar utilizando una subfunción a ala que se llamaría con el parámetro a aplicar (True o False).

En el caso de necesitar invertirlo (hay cuando menos dos campos que están invertidos) se le antecede con 'NOT')

Antecediendo al parámetro con NOT se convierte en lo opuesto

Un ejemplo con parte de los datos publicados:


Dato = Verdadero
Me.CambiosHobser.Enabled = Dato   =====> CambiosHobser.Enabled = verdadero
Me.Subformulario_Cambios D.Locked = NOT Dato ====> Subformulario_Cambios D.Locked = falso

Respuesta

Como lo tiene planteado Access siempre abrirá el formulario desprotegido, puede invertir el proceso desactive y proteja por defecto, para ingresar datos e imprimir desproteja con el botón como lo indica. Otra forma puede ser guardar en una tabla el estado del formulario o en un archivo de control.

Como haci no entendí 

No se mucho de esto 😭

Me refiero en diseño puede desactivar y bloquear por defecto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas