Login-ms-access

Estoy utilizando la siguiente solución hecha por un experto que ya no esta disponible... Me funciona muy bien... Pero mi consulta es la siguiente:
¿Hay forma de generar un modulo que me mantenga el usuario logueado?
Esto es como lo utilizo:

Cra una tabla llamada Pass con estos campos:
-Usuario
-Password
-Formulario
Rellénala adecuadamente con los usuarios que quieras y su contraseña y escribe el formulario que quieres que se le abra a cada uno.
Crea un formulario de inicio y llamalo "Inicio", y crea una macro llamada autoexec en la que la única orden sea abrir este formulario que estamos creado ahora. Solo por llamarse Autoexec, esa macro se ejecutara al abrir la base de datos.
En este formulario pon dos cuadros de texto. Llamalos Usuario y Contraseña.
Ahora pon un botón.
En el evento click de ese botón pon este código:
Dim Base As DataBase
Dim pass As Recordset
set Base = CurrentDB
set Pass = Base.openRecordset("select * from pass where Usuario = '" & Usuario & "' and password = '" & Contrasena & "'"
if Pass.RecordCount = 0 then
msgbox "Contraseña incorrecta"
exit sub
end if
'Fijate que da igual que la contraseña este mal, o el usuario no exista. De este modo no das pista al posible intruso.
'Si la ejecucion llega a este punto, es que el usuario y la contraseña son validos. Ahora solo queda Abrir el formulario adecuado a cada usuario.
Docmd. Openform pass! Formulario
DoCmd. Close acForm, "Inicio"
Listo. Ya tienes lo que quieres. A partir de aquí puedes complicar esto y añadir los niveles de seguridad que quieras. Por ejemplo, podrías ocultar la tabla Pass, o sacarla fuera de la base de datos a otra externa, o encriptarla con la encriptación de access o con una que hagas tu mismo.
Pero a menos que tus usuarios tengan un alto nivel de conocimientos de Access, con ocultar la tabla seguramente es suficiente, y quizás ni eso.

1 respuesta

Respuesta
1
Hablemos con propiedad. Generar un módulo... no significa lo que tu quieres decir (o eso creo yo). Yo me imagino que quieres saber cual es el usuario que ha entradado en la aplicación mientras esté en ella.
Utiliza una variable publica declarada en un módulo (ahora sí que es un módulo) independiente. En el momento de validar usuario y password, asignas el valor del usuario a la variable y lo puedes utilizar en toda la base de datos.
Muchas Gracias... realmente si, es como tu dices..
Quiero saber cual es el usuario que ha entradado en la aplicación mientras esté en ella.
Lo que no se como hacer es:
Una variable publica declarada en un módulo (ahora sí que es un módulo) independiente

¿Podrías orientarme en este asunto?
Muchas gracias

Abres el editor de VBA, creas un nuevo módulo clicando el botón que aparece en la barra de botones con el símbolo de los módulos. Es el botón que, si lo despliegas dice: Modulo, Modulo de clase, Procedimiento. Tu creas un módulo (a secas).
Escribes la línea:
Public strUsuario As String
Ahora vuelves al código de verificación de usuario. Una vez está validado, asignas el valor del cuadro de texto a la variable:
strUsuario = Me!Usuario
Ahora ya puedes referirte, en cualquier punto de la aplicación, a la variable strUsuario y te devolverá el nombre del usuario.
Muchísimas Gracias llodax
Ha sido una muy buena solución... te lo agradezco.
Estoy orgulloso de gente como tu... que separa su tiempo para compartir sus conocimientos.
Nuevamente muchas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas