¿Cómo poner contraseña edición access?

Tengo un base de datos con un formulario login de usuario y contraseña, de tal manera que si no sabes las credenciales no se puede acceder, pero como sabemos con la tecla shift podemos acceder a la base de datos y también poder editarla.

Le he puesto contraseña al VBA, pero al resto de objetos (tablas, consultas, formularios, informes, macros...) no sé.

Mi pregunta es:

¿Cómo puedo hacer para poner una clave a la edición si accedemos con la tecla shift?

No quiero deshabilitar el acceso con shift, sólo que si alguien entrara de esa forma le pregunte una contraseña y en caso que no la sepa no pueda acceder.

2 Respuestas

Respuesta
2

Si no quieres deshabilitar la tecla SHIFT te aconsejaría que ocultaras el entorno de Access, de forma, que puede acceder a los formularios pero no nada más que un formulario, luego otro, etc.

Por ejemplo, en el escritorio creo un acceso directo a la base

Cuando hago doble clic

Escribo el usuario y la contraseña

Y al pulsar comprobar, como es válido

Para ello, crea un módulo y ponlo como

Option Compare Database
Global Const SW_HIDE = 0
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3
Private Declare PtrSafe Function apiShowWindow Lib "user32" _
    Alias "ShowWindow" (ByVal hwnd As Long, _
          ByVal nCmdShow As Long) As Long
Function fSetAccessWindow(nCmdShow As Long)
Dim loX  As Long
Dim loForm As Form
        loX = apiShowWindow(hWndAccessApp, nCmdShow)
End Function

Luego en el formulario Login ponlo como se ve en sus propiedades-Eventos-Al abrir

Y lo mismo en los otros formulario

Hago la salvedad de que no sé que instrucción tiene puesta en caso de que el usuario y la contraseña sean válidos. Yo le tengo puesto que abra el formulario tabla1 y que cierre el de inicio. Y en los botones Cerrar le tengo puesto

Application. Quit

Gracias!

Al acceder con usuario correcto, accede a un menú principal que vincula todos los formularios, y por lo tanto prácticamente a todo. 

Habría alguna manera de ponerle clave con accedes con shift, algo así como versión editor? 

de tal manera que si no sabes la clave cuando ejecutas el programa normal no puedes entrar y si no sabes la clave del shift tampoco puedes ver nada de lo que hay dentro 😬

No he entendido la pregunta. Supongo que te refieres a ponerle una clave si accedes con la tecla Shift pulsada. En el "explorador" de Windows, puedes hacer clic con el botón derecho del ratón sobre la base y en la solapa Seguridad, si pulsas Editar puedes añadirle usuarios y permisos. Pero el panel de navegación la seguiría viendo. Puedes ocultarlo, con la base abierta pulsa Archivo-Opciones-Base de datos actual y demarca la casilla Mostrar panel de navegación y las casillas Permitir el uso de menús...

Y si ya quieres, una vez tengas hecho todo eso puedes convertirla a accde. Esto lo que hace es compilar y encriptar todo el código y no pueden ver el diseño de formulario, informes, macros y módulos, y como el panel de navegación ya estaba oculto... Pero eso sí, guarda bien la base original en accdb, en la que tu puedes hacer los cambios, ya que una vez convertida en accde no hay vuelta atrás.

Gracias!

Lo que necesito o quiero hacer, no sé si es posible jeje.

Es por ejemplo como en una web, está la parte del diseño y la parte que se ve. Lo que quiero hacer con access (ahora lo tengo en accdb), es que cuando se ejecute normal funcione la base (eso lo tengo), pero que al editar o ver todos los diseños se necesite una contraseña para entrar, de lo contrario no se pueda acceder.

Es una base de datos que voy editando o arreglando sobre la marcha, conforme voy utilizándola, por lo que si hago copia, los datos nuevos que vaya metiendo no quedarán registrados si necesito modificarla.

Lo siento, no puedo decirte más.

Respuesta
1

Por darte otra solución:

Si ya tienes un código para deshabilitar el acceso con la tecla SHIFT (supongo que uno parecido a éste: https://neckkito.xyz/nck/index.php/teoria/cosas-que-es-bueno-saber/deshabilitar-tecla-shift), puedes poner un botón (o una etiqueta o algo) para habilitarlo, previa contraseña, por ejemplo, y siguiendo los códigos del ejemplo mencionado:

Private Sub cmdHabilitar_Click()

If InputBox("Escribe la contraseña para poder acceder con la tecla SHIFT")="password" Then
    AlterarPropiedades "AllowBypassKey", dbBoolean, True
    MsgBox "La aplicación se cerrará para aplicar los cambios", vbInformation, "REINICIO"
    DoCmd.Quit

Else

Msgbox "Contraseña incorrecta, no se habilitará el acceso con la tecla SHIT"

End If

End Sub

@Sveinbjorn El Rojo Gracias!

Para deshabilitar Shift, he hecho como indica en:

https://neckkito.xyz/nck/index.php/teoria/cosas-que-es-bueno-saber/deshabilitar-tecla-shift 

1. He creado Modulo (Módulo 1)

2. He puesto el código: (el que se indica en el apartado 3 del enlace)

Public Function AlterarPropiedades(strPropName As String, _
        varPropType As Variant, varPropValue As Variant) As Integer
    Dim dbs As Database, prp As Property
    Const conPropNotFoundError = 3270
    Set dbs = CurrentDb
    On Error GoTo Change_Err
    dbs.Properties(strPropName) = varPropValue
    AlterarPropiedades = True
Change_Bye:
    Exit Function
Change_Err:
    If Err = conPropNotFoundError Then ' Propiedad no ha sido localizada.
        Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
        dbs.Properties.Append prp
        Resume Next
    Else
            ' Error desconocido.
        AlterarPropiedades = False
        Resume Change_Bye
    End If
End Function

Luego:

En el formulario de login que sale nada más abrir la base de datos he puesto en un botón llamado "Habilitar_Click":

Private Sub Habilitar_Click_Click()
If InputBox("Escribe la contraseña para poder acceder con la tecla SHIFT") = "micontra" Then
    AlterarPropiedades "AllowBypassKey", dbBoolean, True
    MsgBox "La aplicación se cerrará para aplicar los cambios", vbInformation, "REINICIO"
    DoCmd.Quit
Else
MsgBox "Contraseña incorrecta, no se habilitará el acceso con la tecla SHIT"
End If
End Sub

(He cambiado Private Sub cmdHabilitar_Click() por Private Sub Habilitar_Click_Click(), para cuando haga click sobre el botón. 

No sé si lo he hecho todo correcto, cuando meto la contraseña me dice eso, que la aplicación se cerrará para aplicar cambios. ¿Cómo vuelvo a hacer para habilitar el uso del SHIFT?

Imagino que también habrás puesto lo del punto 5 (el código que realmente deshabilita la tecla al cargar el formulario de inicio). Si lo has hecho, cuando pulses el botón, metas la contraseña correcta y se cierre Access, la siguiente vez que la abras lo haces pulsando SHIFT y podrás entrar con acceso completo. Si la abres normal, se te volverá a boquear el acceso con SHIFT.

Si no has hecho lo del punto 5, solo te falta añadirlo.

Yo tengo un sistema similar montado en varias aplicaciones y lleva 5 o 6 funcionando sin problemas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas