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 Sub
Aquí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 Sub
Este 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