Creación de usuarios y contraseñas en access

Necesito ayuda para creación de un código para el acceso de diferentes usuarios con contraseñas a diferentes formularios ya pre diseñados, con ayuda de diferentes paginas y tutoriales cree un código, que me genera dos errores, cuando ingreso como administrador de datos me da el acceso, sin embargo a veces me aparece el formulario y a veces no a pesar de que el acceso lo acepta, el segundo error es con los otros usuarios, que siempre me dice, "clave invalida", pero estoy 100 %segura que la clave es correcta, ya que las he cambiado y vuelto intentar miles de veces y me genera el mismo error.

Si hay alguien que me pueda ayudar estaré sumamente agradecida, aquí les dejo el código que tengo:

Private Sub CmdEntrar_Click()
Dim auxContraseña As String
'Comprobamos que hay datos en las cajas de texto
If Nz(Me.Txtlogin.Value, "") = "" Then
MsgBox "Seleccione un nombre de usuario de la lista para acceder", vbInformation, "ATENCION"
Me.Txtlogin.SetFocus
ElseIf Nz(Me.Txtpassword.Value, "") = "" Then
MsgBox "Introduzca la contraseña del usuario seleccionado", vbInformation, "ATENCION"
Me.Txtpassword.SetFocus
Else
If Nz(DLookup("Password", "Usuarios", "Id_usuario=" & Me![Txtlogin]), "") <> "" Then
auxContraseña = DLookup("Password", "Usuarios", "Id_usuario=" & Me![Txtlogin])
End If
If auxContraseña <> Me.Txtpassword.Value Then
If NumIntentos < 3 Then
NumIntentos = NumIntentos - 1
MsgBox "La contraseña introducida es incorrecta" & vbCrLf & _
"Le quedan " & NumIntentos & " intentos" & vbCrLf & vbCrLf & _
"Por favor, introduzca otra", vbExclamation, "INTRODUCCIÓN INCORRECTA"
Me.Txtpassword.Value = ""
Me.Txtpassword.SetFocus
Else
MsgBox "Ha superado el numero de intentos", vbCritical, "ADIOS..."
DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
End If
Else
If DLookup("id_acceso", "Usuarios", "id_usuario=" & Me![Txtlogin]) = 3 Then
MsgBox "Ha entrado el Administrador de datos, mostramos todas las tablas", vbInformation, "BIENVENIDO"
Call Admin
Else
If DLookup("id_acceso", "Usuarios", "id_usuario=" & Me![Txtlogin]) = 3 Then
MsgBox "Ha entrado Gerencias, ocultamos todas las tablas", vbInformation, "BIENVENIDO"
Call Admin
Else
If DLookup("id_acceso", "Usuarios", "id_usuario=" & Me![Txtlogin]) = 3 Then
MsgBox "Ha entrado un Usuario, ocultamos todas las tablas", vbInformation, "BIENVENIDO"
Call Usuar
Else
If DLookup("id_acceso", "Usuarios", "id_usuario=" & Me![Txtlogin]) = 3 Then
MsgBox "Ha entrado Cobranza, ocultamos todas la tablas", vbInformation, "BIENVENIDO"
Call cobranzaadmi
Else
If DLookup("id_acceso", "Usuarios", "id_usuario=" & Me![Txtlogin]) = 3 Then
MsgBox "Ha entrado Administracion, ocultamos todas la tablas", vbInformation, "BIENVENIDO"
Call cobranzaadmi
Else
If DLookup("id_acceso", "Usuarios", "id_usuario=" & Me![Txtlogin]) = 3 Then
MsgBox "Ha entrado RRHH, ocultamos todas la tablas", vbInformation, "BIENVENIDO"
Call RRHH
End If
'DoCmd.OpenForm stDocName, , , stLinkCriteria 'Abrimos el formulario correspondiente
DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
End If
End If
End If
End If
End If
End If
End If
End Sub

Function Admin()
On Error GoTo Admin_Err

DoCmd.OpenForm "Administrador de datos", acNormal, "", "", , acNormal

Admin_Exit:
Exit Function

Admin_Err:
MsgBox Error$
Resume Admin_Exit

End Function

Function Usuar()
On Error GoTo Usuar_Err

DoCmd.OpenForm "Usuario", acNormal, "", "", , acNormal

Usuar_Exit:
Exit Function

Usuar_Err:
MsgBox Error$
Resume Usuar_Exit

End Function
Function cobranzaadmi()
On Error GoTo cobranzaadmi_Err

DoCmd.OpenForm "Cobranza y admi", acNormal, "", "", , acNormal

cobranzaadmi_Exit:
Exit Function

cobranzaadmi_Err:
MsgBox Error$
Resume cobranzaadmi_Exit

End Function
Function RRHH()
On Error GoTo RRHH_Err

DoCmd.OpenForm "RRHH", acNormal, "", "", , acNormal

RRHH_Exit:
Exit Function

RRHH_Err:
MsgBox Error$
Resume RRHH_Exit

End Function

2 respuestas

Respuesta
1

En la web de Neckkito tienes varios ejemplos explicados sobre este tema:

http://siliconproject.com.ar/neckkito/index.php/component/content/article/92-ejemplos-explicados/ejemplos-de-seguridad/193-acceso-segun-administrador-o-usuario 

http://siliconproject.com.ar/neckkito/index.php/component/content/article/94-ejemplos-explicados/ejemplos-de-aplicaciones/210-acceso-segun-administrador-multiples-usuarios 

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/seguridad/92-ejemplos-explicados/ejemplos-de-seguridad/208-contrasena-con-limitacion-de-intentos 

Te recomiendo que los leas con calma y veas las BDs de ejemplo.

En el código que tienes, sin entrar mucho en su análisis, creo que tienes varios errores, el que más me llama la atención es que todos los DLookUp los igualas a 3 para dar acceso a los distintos formularios. Tampoco le das un valor inicial a NumIntentos (y automáticamente toma 0), por eso siempre te da ese mensaje de error.

Un saludo


Respuesta
1

Ahora que ya te han respondido, voy a aportar un granito de arena. Creo que el código lo has complicado mucho.

Supongamos que tienes una tabla Usuarios con Nombre y Contraseña.

En el formulario que usas como inicio, que lo llamaremos así, si tienes un cuadro de texto(o combinado) llamado Usuario y otro cuadro de texto llamado Contraseña, añádele un cuadro de texto llamado Contador(ponlo como oculto) y puedes poner, en el evento Después de actualizar del cuadro de texto Contraseña

If Nz(DCount("nombre", "usuarios", "contraseña = forms!inicio!contraseña and nombre=forms!inicioo!usuario")) >= 1 Then
        Select Case Usuario
        Case Is = "adri"
        DoCmd.OpenForm "adrian"
        Case Is = "pepe"
        DoCmd.OpenForm "pepe"
        Case Else
        DoCmd.OpenForm "juan"
        End Select
    Else
    Contador = Nz([Contador]) + 1
    MsgBox "No eres " & Me.[Usuario], vbOKOnly, "Aviso, llevas " & Me.Contador & " intento(s)"
        If Contador = 3 Then
        DoCmd.quit
        End If
    End If

En esencia, una vez que escribes o eliges el usuario y escribes la contraseña, si es correcta te abre el formulario correspondiente. Si no es correcta te aparece un mensaje de que no eres ese usuario(o lo que quieras ponerle en el mensaje) y que llevas gastadas.. oportunidades. Si llega a la tercera, adiós.

Lógicamente, tienes que cambiar el nombre de los usuarios y formularios

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas