Paso 1
Empecemos por la parte de la tabla, crearemos una tabla en vista diseño.- ID_Usuario (Autonumérico)
- Nombre (Texto, 50)
- Apellidos (Texto, 100)
- Usuario (Texto, 25)
- Contraseña (Texto, 15)
- Activo (Si/NO)
Paso 2
Ahora, debemos realizar una ligera modificación en nuestro formulario. Hemos de cambiar el cuadro de texto (textbox) “txt_Usuario” por un cuadro combinado (combobox) “cbo_Usuario” quedando de la siguiente forma.[full_width]
[/full_width]
En modo diseño del formulario…
En el campo origen de la fila, de la pestaña “Datos” de las propiedades del combobox, agregamos la siguiente sentencia SQL.
Nota: Opcional-mente, la sentencia SQL la puedes generar manualmente, con el generador de consultas.En la pestaña formato, editaremos las propiedades siguientes:
- Número de columnas: 2
- Ancho de columnas: 0cm; 6cm
Paso 3
Ahora nos resta realizar los cambios oportunos en el código VBA. Para ello, empezaremos creando un módulo estándar, que guardaremos con el nombre “bas_Usuarios” y al que añadiremos el siguiente código.
Option Compare Database
Option Explicit
'---------------------------------------------------------------------
' Procedure : Get_Contraseña
' Author : Witigo (Angel Campos Muñoz)
' Date : 22/09/2014
' Purpose : Obtiene la contraseña del usuario pasado como argumento.
'---------------------------------------------------------------------
'
Public Function Get_Contraseña(intUsuario As Integer) As String
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT dbo_Usuarios.Contraseña " & _
"FROM dbo_Usuarios " & _
"WHERE ID_Usuario = " & intUsuario & ";"
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset(strSQL, dbOpenDynaset)
Dim strContraseña As String
If rst.RecordCount <> 0 Then
strContraseña = rst!Contraseña
End If
' Devolvemos la contraseña
Get_Contraseña = strContraseña
' Cerramos el recordset
rst.Close
' Borramos los objetos
Set rst = Nothing
Set dbs = Nothing
End Function
Esta función, nos devuelve de la tabla “dbo_Usuarios”, la contraseña
del usuario pasando como argumento “intUsuario” a la función.
Creamos 2 funciones:
La función “Comprueba_Usuario”, que comprueba que el usuario del sistema, haya seleccionado un usuario del combobox, para iniciar sesión.
Paso 4
Los cambios a realizar en el código del modulo de formulario, son los siguientes.Creamos 2 funciones:
La función “Comprueba_Usuario”, que comprueba que el usuario del sistema, haya seleccionado un usuario del combobox, para iniciar sesión.
'---------------------------------------------------------------------
' Procedure : Comprueba_Usuario
' Author : Witigo (Angel Campos Muñoz)
' Date : 22/09/2014
' Purpose : Controla si se ha seleccionado un usuario del combobox
' cbo_Usuario
'---------------------------------------------------------------------
'
Private Function Comprueba_Usuario() As Boolean
If IsNull(Me.cbo_Usuario.Value) = True Then
' Realizamos mensaje sonoro
Beep
' Mostramos mensaje en la etiqueta
Call MensajeEtiqueta("Debe seleccionar un usuario.")
' Centramos el foco en el textbox
Me.cbo_Usuario.SetFocus
' Devolvemos FALSE por que no hay ningún usuario
' seleccinado en el combobox...
Comprueba_Usuario = False
Else
' Devolvemos TRUE por que SI hay un usuario
' seleccionado en el combobox...
Comprueba_Usuario = True
End If
End Function
Y la función “Comprueba_Contraseña”, que comprueba que el usuario hay introducido una contraseña.
'---------------------------------------------------------------------
' Procedure : Comprueba_Contraseña
' Author : Witigo (Angel Campos Muñoz)
' Date : 22/09/2014
' Purpose : Controla si se ha introducido una contraseña en el
' textbox txt_Password
'---------------------------------------------------------------------
'
Private Function Comprueba_Contraseña() As Boolean
Dim strContraseña As String
strContraseña = Nz(Me.txt_Password, "")
If strContraseña = "" Then
' Realizamos mensaje sonoro
Beep
' Mostramos mensaje en la etiqueta
Call MensajeEtiqueta("Introduzca una contraseña.")
' Centramos el foco en el textbox de la contraseña
Me.txt_Password.SetFocus
' Devolvemos FALSE, por que no se ha introducido ninguna
' contraseña en el textbox...
Comprueba_Contraseña = False
Else
' Devolvemos TRUE, por que hay una contraseña introducida,
' sea erronea o no...
Comprueba_Contraseña = True
End If
End Function
Paso 5
Y el código perteneciente al evento “click” del botón “cmd_Login” quedaría una vez modificado de la siguiente manera:
Private Sub cmd_Login_Click()
' Ocultamos la etiqueta
If [lbl_Mensaje].Visible = True Then [lbl_Mensaje].Visible = False
' Comprobamos si se ha seleccionado usuario
If Comprueba_Usuario = False Then Exit Sub
' Comprobamos si se ha introducido contraseña
If Comprueba_Contraseña = False Then Exit Sub
' Comprobamos el valor introducido para el usuario y su contraseña
If Me.txt_Password = Get_Contraseña(Me.cbo_Usuario) Then
' -----------------------------------------------------------
' Aquí podemos insertar el código que queremos que se
' ejecute cuando iniciemos la sesión...
' -----------------------------------------------------------
' Mostramos mensaje
MsgBox "Sesión de usuario iniciada", _
vbInformation, _
"Inicio de Sesión"
' Cerramos el formulario
DoCmd.Close acForm, Me.Name
Else
' Mostramos mensaje en la etiqueta
Call MensajeEtiqueta("La contraseña introducida es erronea.")
' Centramos el foco en el textbox
Me.txt_Password.SetFocus
End If
End Sub
No hay comentarios.:
Publicar un comentario