Diferentes contraseñas en access

Estoy implementando una aplicación en la que pido una contraseña de entrada al programa, y lo hago a partir de herramientas seguridad.
Pero a partir de aquí me gustaría que hubieran 2 tipos de usuaris distintos y que cada uno tuviera una contraseña, a partir de aquí cada uno tendrá un formulario distinto.
Pero el problema es que no se como puedo pedir esta contraseña y después entrar en un formulario. Lo he intentado con las consultas con parámetros pero no se verificar los datos de entrada.
¿Qué puedo hacer?
Respuesta
1
En estos casos yo recomiendo hacerlo "a mano". Me explico.
Yo crearía un formulario inicial donde solo se pida usuario y password. En función de esos datos, que los compruebo desde VB, abro un formulario u otro. Los pares Usuario-contraseña yo los guardo en una tabla oculta. Dependiendo del nivel de conocimientos informáticos de los usuarios, esta simple seguridad puede muy útil.
Por supuesto, si lo haces así, no debe haber ninguna seguridad a nivel de Access, ya que el control lo estarías haciendo tu.
Si esta solución te parece bien, pero no sabes como hacerlo, escríbeme.
Me parece perfecta tu solución, lo único es que no se Visual Basic, pero estaría interesada en aprender alguna cosilla, sería de gran ayuda que me dijeras como puedo hacerlo.
Gracias por responderme tan rapido.
Saludos
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.
Muchas gracias, ahora probare lo que me has explicado y perfecto.
Y en cuanto a esconder la tabla no me preocupa porque los usuarios no tienen ningún nivel de access. Muchas gracias.
Saludos y atentamente Rosa Pujol

2 respuestas más de otros expertos

Respuesta
1
Yo creo que deberías dar de alta distintos usuarios tal y como lo estás haciendo a partir de herramientas de seguridad...
Posteriormente, puedes evaluar quién es el usuario activo mediante la función CurrentUser()... por ejemplo:
msgbox "El usuario actual es : " & CurrentUser(),vbInformation
te guardas el valor del nombre de usuario en una variable global...
Global gstrUser as string
gstrUser=CurrentUser()
cuando tengas que abrir un formulario puedes hacer..
Dim strFormName as string
select case gstrUser
case "Pepito"
strFormName="Form1"
Case "Juanito"
strformname="form2"
case "Yo"
strformname="Form3"
Case Else 'Otros
strformname="Form4"
End select
Docmd. Openform strformname
Saludos
Jordi Pérez i Madern
Mataró (Barcelona)
Muchas gracias por responder-me, lo que me has escrito es lo que quiero, pero no se trabajar con access con estos códigos, aunque me gustaría aplicarlos.
¿El código que me has escrito corresponde a un módulo? ¿Si es así como y cuando debo insertarlo?
Gracias
´Si lo que quieres es mostrar un primer formulario dependiendo del usuario, ese código que te he pasado deberías insertarlo en un nuevo módulo... Abre un nuevo módulo y copia el siguiente código...
'***Inicio del código***
Global gstrUser as string
Global gstrFormulario1 as string ="NombreFormulario1"
Global gstrFormulario2 as string ="NombreFormulario2"
Global gstrFormulario3 as string ="NombreFormulario3"
Function gInicio()
On Error goto gInicio_Error
gstruser=currentuser()
select case gstruser
Case "Pepito"
DoCmd.OpenForm gstrFormulario1
Case "Juanito"
DoCmd.OpenForm gstrFormulario2
Case else 'Resto de usuarios
DoCmd.OpenForm gstrFormulario3
End select
gInicio_Exit:
Exit function
gInicio_Error:
MsgBox err.number & vbcrlf & err.Description,vbcritical
Resume gInicio_Exit
End Function
'***Final Código ***
Ahora crea una macro con el nombre Autoexec, en Acción busca el comando Ejecutar Código y en nombre de función escribe: gInicio()
Saludos.
Jordi Pérez i Madern
Mataró (Barcelona)
Muchas gracias por la contesta tan rápida, y por todo el código que me has implementado.
Ha sido una gran ayuda comunicar contigo
Saludos
Respuesta
Antes yo trabajaba con la seguridad de Access y lo hacia a través de una macro condicionando la apertura del formulario de inicio según el currentuser () intenta de esa forma a través de una macro de inicio condicionada a ver si te resulta,.
¿Cómo hago esta macro? Sería ideal poder hacer esta macro porque me solucionaría mi problema, lo único es que no sé como implementar la macro condicionando la apertura del formulario de inicio segur el currentuser()
Muchas gracias y saludos
En la parte de macro, le das ver condiciones y ahí entonces escribes en el generador de expresiones,,.
Perfecto, en la macro añado una condición que me compare el parámetro entrado con el que guardo en una tabla, ¿pero cómo me referencio al parámetro de entrada?
Gracias
Abre la ayuda en linea de comando y ahí te dice la secuencia completa que debes poner en la linea de comando,,, si no me equivoco pones /x y el nombre de la macro para que al inicio te abra la macro que acabas de crear,,.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas