Crear un minisistema login en access

Grandes Expertos necesito crear un sistema Log-in para un examen bueno ya realice el examen y no me fue bien estoy en 5to curso y ese profesor es medio loco que nos envía eso sin habernos enseñado aquello
Explico que tengo una tabla donde los campos son: usuario, cargo, contraseña
En un formulario mediante las 2 textbox tengo que poner el nombre de usuario y la contraseña que están puestos en los registros mi código se hace así:
Private Sub Comando31_Click()
Dim lg As Recordset
Set lg = CurrentDb.OpenRecordset("Claves")
If usu = lg!nombre And pas = lg!pass Then
DoCmd.OpenForm "Menu"
pas = ""
usu = ""
usu.SetFocus
Else
MsgBox "Password o Usuario mal Ingresado", vbOKOnly
pas = ""
usu = ""
usu.SetFocus
End If
Como se darán cuenta tengo una tabla llamada claves el problema tengo 7 registros pero este login solo me acepta el primero y los demás no entonces ese es mi problema ustedes me podrían ayudar a resolver el código se los agradeceré mucho apenas soy un renovato

2 Respuestas

Respuesta
1
Échale un vistazo a este artículo. Creo que te servirá perfectamente
http://neckkito.eu5.org/index.php?option=com_content&view=article&id=55&Itemid=65
¿Gracias pero podrías decir todos los errores que tiene mi código y lo que le falta para poder servir como el que tu me diste ademas como se hace para hacer que el login salga como ventana y para que no pueda ingresar si no es administrador?
Tu código no funciona porque, aunque defines un recordset, no haces nada para recorrer los registros de la tabla y comparar los valores que escribes. ¿Qué está mal? Lamentando mucho decirte esto está casi todo mal para lo que quieres conseguir.
Para recorrer los registros de las tablas necesitas utilizar un bucle Do... Loop. Podrías conseguir lo mismo de una manera más simple, utilizando el método DLookUp. Como veo que te decantas por el tema del recordset te lo explico con recordset:
Private Sub Comando31_Click()
Dim lg As Recordset
Set lg = CurrentDb.OpenRecordset("Claves")
... Hasta aquí todo bien. A partir de aquí...
Necesitas una variable que te recoja el valor que el usuario introduce en el textBox para usuario. Necesitas una variable que te recoja el valor que el usuario introduce en el textBox para la contraseña. Y necesitas las mismas variables (con distinto nombre) para recoger los valores correspondientes en el recordset y poder así compararlos.
Supongamos que el textBox del usuario se llama txtUsuario, y el de la contraseña txtPass (para saber sus nombres sacas sus propiedades->Pestaña Otras->Nombre)
Luego creas dos variables
Dim vUser, vPass As Variant
Recoges el valor introducido por el usuario
vUser = Me.txtUsuario.Value
vPass = Me.txtPass.Value
Para saber el valor de la tabla objeto del recordset creamos dos variables similares
Dim vTUser, vTPass As Variant
Necesitas que el puntero se mueva al primer registro a través de lg. MoveFirst
Después necesitas el bucle Do... Loop para recorrer todos los registros del recordset, al tiempo que vas examinando sus valores y comparándolos con los que ha introducido el usuario. Y para sacar los valores del recordset necesitas asignar el valor a estas últimas variables, de manera que
vTxxx = lg. Fields("Nombre del campo de la tabla").Value
Para finalizar, y como detalle de "pofesionarl", deberías cerrar el recordset y vaciar memoria.
En pocas palabras, con lo que puedo entresacar de tu consulta el código debería quedarte una cosa así:
---
Private Sub Comando31_Click()
Dim lg As Recordset
Set lg = CurrentDb.OpenRecordset("Claves")
Dim vUser, vPass As Variant
Dim vTUser, vTPass As Variant
vUser = Me.txtUsuario.Value
vPass = Me.txtPass.Value
lg.MoveFirst
Do Until lg.EOF
vTUser=lg.Fields("usuario").Value
vTPass=lg.Fields("contraseña").Value
If vTUser = vUser Then
If vTPass = vPass Then
DoCmd.OpenForm "Menu"
GoTo Salida
End If
End If
lg.MoveNext
Loop
MsgBox "Password o Usuario mal Ingresado", vbInformation, "ERROR"
Me.txtUsuario.Value = Null
Me.txtPass.Value = Null
Me.txtUsuario.SetFocus
Salida:
lg.Close
Set lg = Nothing
End Sub
---
Por lo que respecta a que se muestre el formulario de login al abrir la BD depende de la versión de Access que utilices. Como te lo digo todo de cabeza a lo mejor no es exactamente igual a lo que puedes ver, pero muy lejos no se va.
Si utilizas 2007 tienes que darle al botón de Office->Opciones de Access->Base de datos actual->Mostrar formulario al inicio: y eliges el formulario que quieres
Si utilizas 2003 creo recordar que tenías que irte al menú Herramientas->Inicio->Mostrar formulario al inicio: y eliges el formulario.
Y ya está. Lo dicho, como te lo he escrito todo de cabeza, si te da algún error, me comentas e intentamos arreglarlo.
Respuesta

Excelente respuesta, muydetallada, aquí va la mia. Puedes ver este ejemplo que he creado para crear un formulario de acceso. Puedes tambien descargar el ejemplo access. Este es el link www.youtube.com/epivv7oRRk8

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas