Gestión de Usuarios Básica

La gestión de usuarios de nuestra aplicación creada en Microsoft Access es tan amplia como habilidades y recursos tenga el programador en cuestión. Es mas, como siempre se ha dicho, el fin justifica los medios, y en este caso, para llegar al mismo fin, cada programador puede utilizar sus propios medios, ya se sabe del otro dicho «Todos los caminos llevan a Roma».

Pues bien, llegados a este punto explicaremos un par de métodos, uno sencillo y el otro mas complejo que desarrollaremos en el siguiente post, de como podríamos implementar la gestión de usuarios en nuestra base de datos.

Un apunte antes de comenzar, en Access se pueden proteger nuestros ficheros con una contraseña sin mucha complicación. Dicha contraseña, la misma para todo el mundo, nos la pide al abrir el fichero pero ese no es el caso que nos ocupa.

Gestión Básica

Yo definiría la gestión básica a que cada usuario disponga de una contraseña y al abrir la aplicación se le pida introducir su nombre de usuario o su DNI o su Correo y su contraseña, una vez que comprobemos que ambos coinciden, le dejamos acceder a nuestra base de datos.

Para ello crearemos una tabla «tblUsuarios» con los campos «IdUsuario, Nombre, Contraseña»

Dicha tabla, para el caso que nos atañe, voy a rellenarla con algunos usuarios y sus respectivas contraseñas, por ejemplo:

45778456Ñ —– PEPITO GRILLO ——————— 3456576
55675776Y  —– EL PEQUEÑO SALTAMONTES —- 7868654
56767456J  —– PULGARCITO ———————— 454657876

Ahora necesitamos un formulario para la validación de nuestros usuarios que puede ser algo parecido a esto:

Y ahora nos centraremos en el código del botón «Aceptar» que debe comprobar que «DNI» y «Contraseña» introducidos corresponden a un usuario autorizado de nuestra aplicación.

Para ello, en «Vista Diseño» accedo a las propiedades del botón «Aceptar» y en la pestaña «Eventos» me sitúo en el evento «Al hacer Clic» y pulso sobre el botón con los tres puntitos que hay a la derecha para crear un «Procedimiento de Evento» y elscribimos el siguiente código:

Private Sub cmdAceptar_Click()

' Buscamos el dni en la tabla tblUsuarios, en caso de no
' encontrarlo avisaremos con un mensaje y saldremos del
' procedimiento.
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

' Si llegamos hasta aquí es porque el dni existe
' en la base de datos, por lo tanto vamos a
' comprobar si la contraseña coincide con la del
' dni introducido.

' Primero creamos una variable para
' guardar la contraseña del usuario
' que previamente hemos validado.

Dim sContraseña As String
sContraseña = DLookup("Contraseña", "tblUsuarios", _
"IdUsuario = '" & Me.txtIdUsuario & "'")

' Una vez tenemos la contraseña en la variable "sContraseña"
' la contrastamos con la que ha introducido el usuario
' en el formulario de validación.

If sContraseña = Me.txtContraseña Then
' Informamos al usuario de que la contraseña
' es correcta y cerramos el formulario
' dándole paso al resto de la aplicación

' Además, como somos un programador que mimamos
' los detalles le daermos el mensaje personalizado
' con su nombre al usuario, para ello, buscamos primero
' en la tabla, el nombre que corresponde con el dni
' introducido.

Dim sNombre As String
sNombre = DLookup("Nombre", "tblUsuarios", "idUsuario= '" _
& Me.txtIdUsuario & "'")

' Con el nombre del usuario en la variable "sNombre"
' procedemos a mostrar el mensaje personalizado.
Call MsgBox("Bienvenido " & sNombre & ",puede acceder al sistema." _
, vbInformation, "Datos correctos")
DoCmd.Close
Else

' Si es incorrecta, informamos al usuario y llevamos
' el cursor de nuevo al cuadro de texto de la contraseña
' para que el usuario vuelva a escribirla.
Call MsgBox("La contraseña es incorrecta. Vuelva a intentarlo.", _
vbExclamation, "Datos correctos")
Me.txtContraseña.SetFocus
End If
End Sub

Guardáis el formulario y probáis que funciona tal y como lo hemos planeado peeeeeeero, nos ha faltado un pequeño detalle. ¿De que nos sirve tener un formulario de validación si podemos pulsar sobre la «X» de cerrar formulario y seguir usando la aplicación? ¿o pulsar cualquier otro formulario y seguir usándola?

Efectivamente, hay que configurar nuestro formulario con las siguientes características:

  1. Que nos aparezca nada mas abrir nuestro programa.
  2. Que no nos deje manipular otros objetos hasta que no se cierre.
  3. Que le botón de «cancelar» cierre completamente la aplicación.
Curso-Access-Avanzado

Punto 1:

Pulsamos botón de Access, arriba a la izquierda, luego a «Opciones de Access» y a continuación nos situamos en «Base de datos actual». Allí nos encontraremos con la opción «Mostrar Formulario» acompañada de un desplegable donde podremos seleccionar nuestro formulario recién creado:

Con esto le estamos indicando que al abrir la aplicación, el primer formulario que aparezca sea el nuestro de validación de usuarios.

A continuación tendremos que configurar dicho formulario para que no se pueda realizar otra cosa hasta que no lo cerremos o salgamos de la aplicación.

Punto 2:

Abrimos nuestro formulario «frmValidación» en modo diseño, vamos a sus propiedades, pestaña «Otras» y marcamos «Emergente y Modal» en «Si».

Punto 3:

Y por último, le pondremos el código al botón de «Cancelar» para que en vez limitarse a cerrar el formulario que directamente se salga de la aplicación. Los pasos para llegar a su procedimiento de evento «Al hacer Clic» son iguales que con el botón de «Aceptar» así que no los repito.

Una vez en su procedimiento de evento le añadimos la siguiente línea:

Private Sub cmdCancelar_Click()
DoCmd.Quit
End Sub

Y con esto tendremos resuelta nuestra gestión simple de los usuarios. A partir de aquí se puede mejorar todo lo que queramos como por ejemplo utilizar contraseñas encriptadas o lo que trataremos en el siguiente post, como gestionar las zonas a las que tiene acceso y a las que no cada usuario, o sea, si Pepito Grillo solo quiero que acceda a las ventas a clientes pero no quiero que acceda al almacén. Pero eso, como os digo, lo dejamos para la próxima publicación.

Si estás interesado en aprender mas puedes solicitar información sobre nuestros cursos de programación orientada a objetos con Visual Basic para Access.

16 comentarios

  1. Excelente aporte y enhorabuena por el blog. Me surge el problema de que solo me funciona con el primer usuario registrado en la tabla, con los otros me reconoce el usurio pero me dice «contraseña incorrecta», a que puede ser debido? gracias.

  2. Hola!, muy buen aporte, pero tengo un problema con el formulario, cuando le doy al botón aceptar me sale un error en el código específicamente en la línea 7, me dice «Error de compilación: No se encontró el método o el dato miembro» y no sé porqué pasa, si puedes responderme gracias! 😀

  3. Hola buena página! 🙂 me sirve mucho pero tengo un problema con el código la línea 7 exactamente, en la parte
    Me.txtIdUsuario
    pues me dice «Error de compilación: No se encontró el método o el dato miembro», si puedes ayudarme muchas gracias!

    1. Hola. Por si te puede servir, a mí me pasaba lo mismo, hasta que me percaté que confundía el IdUsuario de tblUsuarios y el Me.txtIdUsuario correspondiente al campo del formulario. Al deshacer el enredo funcionó perfecto.

  4. Podría pasarme el archivo a mi correo?
    me sale un error y he hecho paso a paso lo explicado pero no soy capaz de encontrar el error.

  5. Sabes tengo problema, sale el siguiente error al intentar ingresar a la aplicación «“Error de compilación: No se encontró el método o el dato miembro”

    Si me pudieras ayudar con esto.

Responder a fbendia Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.