Formulario de Validacion de Usuario y Password para abrir formulario en vista edicion

Tengo un formulario que debe validad el usuario y el password para poder abrir otro formulario en vista edicion en access. Le escribi el siguiente codigo que vi en la internet, pero no me abre el formulario, me dice que el usuario y/o el password son incorrecto, de acuerdo al procedimiento de eventos. El campo usuario es es un combo que nombre cmdCurrentEmployee el cual me mantiene como usuario actual en el formato que deseo abrir para editar. Este es el codigo que coloque.

Private Sub cmdLogin_Click()
Dim UserLevel As Integer

If IsNull(Me.cboCurrentEmployee) Then
MsgBox "Por favor, escriba su Usuario", vbInformation, "Usuario requerido"
Me.cboCurrentEmployee.SetFocus
ElseIf IsNull(Me.txtPassword) Then
MsgBox "Por favor, ingrese su Contraseña", vbInformation, "Contraseña requerida"
Me.txtPassword.SetFocus
Else
If (IsNull(DLookup("[Usuario]", "Usuarios", "[Usuario] ='" & Me.cboCurrentEmployee.Value & _
"' And Password = '" & Me.txtPassword.Value & "'"))) Then
MsgBox "Usuario y/o Contraseña incorrectos"
Else
UserLevel = DLookup("Id_acceso", "Usuarios", "Usuario = '" & Me.cboCurrentEmployee.Value & "'")
If UserLevel = 1 Then
DoCmd.Close
MsgBox "Bienvenido!!!", , "Administrador"
Else
DoCmd.OpenForm "Formulario para editar"
End If
End If
End If
End Sub

3 Respuestas

Respuesta
1

Observe estos modelos:

1. Con Access

En este caso valida la contraseña del usuario seleccionado

2. Login con PostgreSQL

En este caso valida el rut y la contraseña.

En ambos casos si el usuario no ingresa correctamente la contraseña obtiene el mensaje.

Si quiere los ejemplos los puede solicitar a [email protected] 

Respuesta

Simplifícalo, será mas fácil de controlar el acceso.

Lo básico es verificar si hay un usuario y contraseña (ejemplo: que el valor no es un NULL y si acaso controlar las condiciones como la longitud y otros parámetros restrictivos).

Si al validar uno se los datos este no cumple las condiciones, se aborta y se le puede enviar el foco al campo a cumplimentar correctamente -este es el momento de abortar el resto del código que se vuelve intrascendente (un simple Exit Sub lo logra)-.

Una vez que el usuario y la contraseña 'pasen el filtro' (no es obligatorio aplicar filtros, pero se trata de seguridad) es el momento de lanzar el DLookup para obtener el nivel de acreditación.

Si NO existe el usuario y contraseña devolverá un NULL (se rechaza al usuario y ... )

Si existe el usuario (devolverá su nivel de acceso, no un NULL) y se puede validar si el nivel es de administrador o cualquiera otro de los admisibles para actuar en consecuencia.

Quizás se deberían crear a nivel global las variables usuario y nivel de acceso, permitiría utilizarlas durante el resto de la sesión de ese mismo usuario.

Respuesta

José, como bien te dice Enrique sería más cómodo simplificar el proceso. Entre otras cosas, por lo que parece, el nombre del empleado se selecciona de un combinado ¿cboCurrentEmployee?

El problema del combinado es que te muestra los nombres de los empleados. Te aconsejo que no le des a nadie la oportunidad de saber los nombres. Se pone un cuadro de texto y que escriba él.

Por cierto, no entiendo para que sirve la declaración de la variable Userlevel.

Se supone que al poner un formulario de Login es para controlar quien entra. Por eso, por ejemplo, si tengo la tabla Usuarios (te dejo a la vista las contraseñas)

Y un formulario de Login

Puedes ver que la contraseña está equivocada, pero no tengo intención ninguna de decirle donde se equivocó. Si pulso el botón

Al pulsar Aceptar se cierra la aplicación. (Podrías poner una tabla Registro, donde te guarde quien entró y a la hora que entró y salió, por si tienes que liquidarlo. O quien intentó entrar y no acertó. O darle tres oportunidades, o...

En este caso, el código del evento Al hacer clic del botón es

Private Sub Comando4_Click()
If IsNull(DLookup("usuario", "usuarios", "usuario='" & Me.Usuario & "'")) Or IsNull(DLookup("contraseña", "usuarios", "contraseña='" & Me.Contraseña & "'")) Then
MsgBox "El usuario o la contraseña no son correctos", vbOKOnly, "Lo siento, otra vez sera, pero ahora me cierro"
Application.Quit
Else
DoCmd.OpenForm "clientes", , , , acFormEdit
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas