Clave con numero de intentos

Tengo esta instrucción para poder desbloquear cuadro de texto que al abrirlo se encuentran bloqueados, lo que quisiera es ponerle un numero de intentos si la contraseña no es correcta, pero no se como debo hacerlo.

Un cable gracias,

Private Sub BotonEdita_Click()
Dim pwd As Integer
Dim op As Variant
pwd = "123"
op = Me.Texto2.Value
If op = pwd Then
Me.IdContribuyente.Enabled = True
Me.Contribuyente.Enabled = True
Me.DNI.Enabled = True
Me.C_Postal.Enabled = True
Me.Poblacion.Enabled = True
Me.Provincia.Enabled = True
Else
MsgBox "Contraseña incorrecta" & vbCrLf & vbCrLf & "DATOS CONTRIBUYENTE" & vbCrLf & vbCrLf & " se cerrara", vbCritical
DoCmd.Close acForm, "DatosContribuyente"
End If
End Sub

1 respuesta

Respuesta
1

Daniel, sólo una cosa antes, si defines una variable como integer, no le debes dar valor encerrado entre comillas, ya que Access entiende que es texto

Dim pwd as integer

pwd=123

sin comillas

Con respecto a lo de las tres veces, se puede hacer de mil formas distintas. Todo depende de como quieras hacerlo, y lo que quieres que haga en caso de que a la tercera no acierte. Yo siempre aconsejo liquidarlo y que parezca un accidente. Mira, en la tabla Usuarios tengo el nombre de cada uno y su contraseña. No les pongo máscara de entrada, para que veas los valores y Adrián tiene la 111

En el formulario Usuario, en vista diseño le añado un cuadro de texto oculto llamado Contador( no sería necesario pero creo que se ve mejor). Es el que pone Independiente

Al abrir el formulario, escribo Adrian y 222 y cuando pulso Verificar

Lo intento cambiando la contraseña

Lo vuelvo a intentar

Cuando pulso aceptar

Al aceptar se cierra la base. Se le podría decir que saliera un láser de mitad de la pantalla y que lo cegara para siempre. Eso va a gusto del consumidor.

El código del botón es

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 "Inicio Menu"
Else
    Contador = 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
Private Sub Form_Current()
Contador = 0
End Sub

Es decir, cada vez que se abre el formulario, el contador se pone en cero. En caso de que acierte se abre el formulario Inicio menú.

Pero como te decía, se puede hacer de muchas formas.

Esta muy bien pero solo me interesa poner contraseña nada de usuario,

este es el formulario que abro con botón desde otro formulario

cuando lo abro aparecen los cuadros de texto inhabilitados con la instrucción Enabled y si quiero editarlo clic en botón edita donde me pide la contraseña si es correcta habilita los cuadros de texto y si no lo es cierra el formulario, lo que pretendo es tener un numero de intentos y no que lo cierre a la primera.

Saludos y gracias.

He echo modificaciones en la instrucción pero no consigo el contador.

esta es

Private Sub BotonEdita_Click()
Dim pwd As Integer
Dim op As Variant
pwd = "123"
op = Me.Texto2.Value
If op = pwd Then

If VarType(IdContribuyente) <> vbNull Then
DoCmd.OpenForm "Contribuyente", , , "[IdContribuyente] = " & Me.IdContribuyente
End If
DoCmd.Close acForm, "DatosContribuyente"
Else
MsgBox "Contraseña incorrecta" & vbCrLf & vbCrLf & "DATOS CONTRIBUYENTE" & vbCrLf & vbCrLf & " se cerrara", vbCritical
DoCmd.Close acForm, "DatosContribuyente"
End If
End Sub

¿Para qué definir una variable si va a ser un valor fijo, caso del 123 o va a tener el mismo valor que un control?

He tratado de copiar lo que tienes puesto. Verás que en vista diseño, le he añadido el cuadro de texto llamado Contador. Los controles se "definen" por lo que pone en sus Propiedades-Otras-Nombre

Por otro lado, desde Idcontribuyente hasta provincia, los pongo como inhabilitados, de forma que cuando abro el formulario

Ahora, en Texto2 escribo 222 y pulso Editar

Aceptas y escribo 333

A la tercera se cerraría la base, pero tu ponle lo que quieres que haga. Ahora, le pongo el correcto 123

Me habilita los cuadros de texto y ya puedo hacer lo que quiera.

El código del evento Al hacer clic del botón editar es

Private Sub Edita_Click()
If Texto2 <> 123 Then
Contador = Contador + 1
MsgBox "No es correcta", vbOKOnly + vbInformation, "Llevas " & Contador & " intento(s)"
If Contador = 3 Then
MsgBox "Como van 3 y no has acertado, me cierro", vbOKOnly, "Adios muchacho"
DoCmd.Quit
End If
Else
For Each Control In Form.Controls
If Control.ControlType = acTextBox Then
Control.Enabled = True
End If
Next
End If
End Sub
Private Sub Form_Current()
Contador = 0
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas