Problema con el valor de una matriz

Hola Santiago.
Para variar, me ha surgido un nuevo problema con la autentificación del usuario, y es que he definido la matriz "Intentos" para que guarde las veces que se introduce la contraseña y una vez agotado el tercer intento, se cierre la aplicación. Pero no consigo hacer funcionar el contador INTENTOS, ya que según el mensaje "Ha agotado el ..." siempre está en 1º, con lo cual no se por qué la matriz no acumula los intentos.
El código que utilizo es el siguiente:
Private Sub Aceptar_Click()
Dim Permiso
Dim Intentos As Integer
Dim Diferencia As Integer
Permiso = DLookup("[tblpermis].[Password]", "[tblpermis]", "[Password] Like '" & Forms![frmPermis]![KeyPassword].Value & "*'")
If Permiso = Forms![frmPermis]![KeyPassword].Value Then
    DoCmd.Close acForm, "frmPermis"
    DoCmd.OpenForm "PANEL DE CONTROL"
    Else
    Intentos = Intentos + 1
    Diferencia = 3 - Intentos
    MsgBox "Ha agotado el " & Intentos & "º intento de acceso, le quedan " & Diferencia
    Exit Sub
End If
If Intentos > 3 Then
    MsgBox "No está autorizado a entrar en esta base datos", vbCritical, " Ha agotado sus tres intentos de acceso"
    DoCmd.Close acForm, "frmPermis"
End If
If Permiso Is Null Then
    MsgBox "     ¡ Clave de acceso incorrecta !", 48, "      ¡ ATENCIÓN !                                    ", 50, 50
    Password.SetFocus
    Me.Password.Value = ""
End If
End Sub
Te agradecería mucho tu ayuda.

1 respuesta

Respuesta
1
La variable intentos se está inicializando a 0 cada vez que entras en el procedimiento.
La solución es sencilla: o bien defines la variable como estática "static intentos as integer" o bien sacas la definición de la variable a un módulo y la defines como global con "global intentos as integer".
De esa forma evitarás que se inicialice cada vez que entra en el 'sub Aceptar_Click'.
Un saludo
P.d.: Aunque la solución a la pregunta de antes fuera un tanto 'chapucera', no dejaba de ser original. Me han defraudado las 4 estrellitas :-)
Gracias Santiago, he probado haciendo un módulo aparte y definiendo la variable como global, pero ahora el problema es volver a dejar a 0 la variable una vez que la clave es correcta.
Pues pon a 0 el contador cuando el usuario entre en el formulario. Supongo que sería después del IF que tienes:
If Permiso = Forms![frmPermis]![KeyPassword].Value Then
    intentos = 0
    DoCmd. Close acForm, "frmPermis"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas