Problemas con código acceso usuario / contraseña
Estoy tratando de implementar en una base de datos un formulario de acceso mediante usuario y contraseña.
He copiado la estructura de un post antiguo y al insertar el código VBA se me generan problemas de expresión que no se solucionar:
El código para validar el usuario y la contraseña es el siguiente
Private Sub cmdAceptar_Click()
If IsNull(DLookup("IdUsuario", "tblUsuarios", "IdUsuario = '" & Me.txtIdUsuario & "'")) Then
Call MsgBox("El usuario no existe en nuestra base de datos.", vbCritical, "Atención")
Exit Sub
End If
Dim sContraseña As String
sContraseña = DLookup("Contraseña", "tblUsuarios", & "IdUsuario = '" & Me.txtIdUsuario & "'")
If sContraseña = Me.txtContraseña Then
Dim sNombre As String
sNombre = DLookup("Nombre", "tblUsuarios", "idUsuario= '" & Me.txtIdUsuario & "'")
Call MsgBox("Bienvenido " & sNombre & ", puede acceder al sistema." _
, vbInformation, "Datos correctos")
' Antes de cerrar el formulario vamos a guardar el idUsuario
' en la tabla "tblUsuarioActivo"
Dim sSQL As String
' Creamos una sentencia SQL que es una consulta de
' actualización de la tabla
sSQL = "UPDATE tblUsuarioActivo SET " "tblUsuarioActivo.IdUsuario = '" & Me.txtIdUsuario & "'"
DoCmd.SetWarnings False
DoCmd.RunSQL sSQL
DoCmd.SetWarnings True
DoCmd.Close
Else
Call MsgBox("La contraseña es incorrecta. Vuelva a intentarlo.", _
vbExclamation, "Datos correctos")
Me.txtContraseña.SetFocus
End If
End SubAquíme sale "error de sintaxis" en la línea:
sContraseña = DLookup("Contraseña", "tblUsuarios", & "IdUsuario = '" & Me.txtIdUsuario & "'")
También he tenido que crear un módulo con el siguiente código:
Public Sub Permiso(sNombreFormulario As String)
' Lo primero que haremos es cargar el usuario activo
Dim sUsuarioActivo As String
sUsuarioActivo = DLookup("IdUsuario", "tblUsuarioActivo")
' A continuación buscaremos de la tabla "tblUsuariosPermisos"
' que dice el campo "acceso" de ese formulario del usuario
' activo. Para ello usamos el Dlookup añadiendo los
' filtros por IdUsuario y Nombre del Formulario
Dim bPermisoFor As Boolean
bPermisoFor = DLookup("Acceso", "tblUsuariosPermisos", "IdUsuario= '" & sUsuarioActivo & "' AND NombreFormulario= '" & sNombreFormulario & "'")
' Con un Si o un No, en la variable "bPermisoFor"
' tomamos una decisión.
If bPermisoFor = False Then 'Informamos al usuario y le cerramos el formulario.
Call MsgBox("Usted no tiene permisos para visualizar este formulario", " Contacte con el administrador", vbCritical, Atención)
DoCmd.Close acForm, sNombreFormulario
End If
' Logicamente si la variable es SI no hacemos nada y
' dejamos que el formulario siga abriéndose.
End SubEste módulo desconozco si funciona ya que al aplicarlo en los distintos formularios, en el evento "al abrir", me sale "Error de compilación: se esperaba una variable o un procedimiento, no un módulo".
El código que he introducido al abrir los formularios y que me genera dicho error es el siguiente:
Private Sub Form_Open(Cancel As Integer) 'Llamos al procedimiento de nuestro módulo 'pasándole el nombre del formulario Call Permiso(Me.Name) End Sub
