No se como poner numero de intentos en contraseña

Tengo este codigo para entrar en una base de datos, pero me gustaria poner un numero de intentos y no se como hacerlo.

¿Algun experto me puede decirme como devo hacerlo?

Este es el codigo.

Dim UserLevel As Integer

If IsNull(Me.txtUsuario) Then
MsgBox "Por favor, escriba su Usuario", vbInformation, "Usuario requerido"
Me.txtUsuario.SetFocus
ElseIf IsNull(Me.txtPass) Then
MsgBox "Por favor, ingrese su Contraseña", vbInformation, "Contraseña requerida"
Me.txtPass.SetFocus
Else
If (IsNull(DLookup("[Usuario]", "Usuarios", "[Usuario] ='" & Me.txtUsuario.Value & _
"' And Pass = '" & Me.txtPass.Value & "'"))) Then
MsgBox "Usuario y/o Contraseña incorrectos"
Else
UserLevel = DLookup("Nivel_Seguridad", "Usuarios", "Usuario = '" & Me.txtUsuario.Value & "'")
If UserLevel = 1 Then
DoCmd.Close
DoCmd.OpenForm "MenuDeOpciones"
'MsgBox "Bienvenido!!!", , "Administrador"
Else
DoCmd.OpenForm "Formulario1"
End If
End If
End If

2 Respuestas

Respuesta
3

Pruebe con esto.

Defina a nivel de formulario esta variable

Dim intentos As Byte

Aunque su código no es muy claro, trate de adaptar este código :

Dim UserLevel As Integer
If IsNull(Me.txtUsuario) Then
    MsgBox "Por favor, escriba su Usuario", vbInformation, "Usuario requerido"
    Me.txtUsuario.SetFocus
ElseIf IsNull(Me.txtPass) Then
    MsgBox "Por favor, ingrese su Contraseña", vbInformation, "Contraseña requerida"
    Me.txtPass.SetFocus
Else
    If (IsNull(DLookup("[Usuario]", "Usuarios", "[Usuario] ='" & Me.txtUsuario.value & _
      "' And Pass = '" & Me.txtPass.value & "'"))) Then
      MsgBox "Usuario y/o Contraseña incorrectos"
      intentos = intentos + 1
      If intentos = 3 Then
        MsgBox "Lo siento ha agotado el número de intentos", vbCritical, "Le informo"
       Application.Quit
      End If
    Else
      UserLevel = DLookup("Nivel_Seguridad", "Usuarios", "Usuario = '" & Me.txtUsuario.value & "'")
     If UserLevel = 1 Then
       DoCmd.Close
       DoCmd.OpenForm "MenuDeOpciones"
      'MsgBox "Bienvenido!!!", , "Administrador"
     Else
      DoCmd.OpenForm "Formulario1"
    End If
  End If
End If

No olvide que la variable intentos debe definirla a nivel de modulo del formulario

gracias por contestar.

No se a que te refieres a la variable intentos debe definirla a nivel de modulo del formulario

Estando en el código del formulario, como muestra la imagen.

Observe en "General" debe incluir la variable.

Si quiere algo más completo escríbame a [email protected] y le suministro este formulario.

Tengo 2 versiones, una para back end en Access y otro para back end en PostgreSQL. Solicite la versión que requiera y con gusto se la hago llegar.

Respuesta
2

¿Para qué voy a darle explicaciones a alguien que no se sabe su nombre de usuario o su contraseña?

Si tengo el formulario Usuario, al que le he añadido un cuadro de texto llamado Contador

En el evento Al hacer clic del botón le pongo

Private Sub Comando15_Click()
If Nz(DCount("usuario", "usuarios", "contraseña = forms!usuario!contraseña and usuario=forms!usuario!usuario")) >= 1 Then
    DoCmd.SetWarnings False
    DoCmd.RunSQL "insert into registro(usuario,fecha,hora)values(Usuario,date(),time())"
    DoCmd.OpenForm "Julian"
    DoCmd.Close acForm, "usuario"
Else
    Contador = nz([Contador]) + 1
    MsgBox "No eres " & Me.[Usuario], vbOKOnly, "Aviso, llevas " & Me.Contador & " intento(s)"
    DoCmd.CancelEvent
        If Contador = 3 Then
        MsgBox "Como he comprobado que no eres quien dices me cierro", vbOKOnly + vbCritical, "Otra vez será"
        DoCmd.Quit
        End If
End If
End Sub

Lo de Docmd.setwarnings y lo de Docmd.runsql lo pongo porque tengo una tabla Registro donde me guarda quien entró, el día y la hora a la que entró, por si es necesario saber quien "trasteó" algo que no debía y debe "sufrir un accidente".

Como también te digo que sería conveniente tener constancia de quien intentó entrar y no acertó, por si "tiene que sufrir otro accidente"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas