Hola nuevamente, ojalá me puedas ayudar con un error en un código VB en access

El problema es que no me respetando el total de intentos al ingresar una contraseña errónea, automáticamente me saca a la primera, cuando lo debería hacer al tercer intento, aquí va el código y gracias:

Option Compare Database
Option Explicit
Dim numintentos As Integer
Dim AccesoUsuarios As Integer
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, "ATENCIÓN"
Me.TxtLogin.SetFocus
ElseIf Nz(Me.TxtPassword.Value, "") = "" Then
MsgBox "introduzca la contraseña del usuario selleccionado", vbInformation, "ATENCIÓN"
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 intrucida 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, "ADIÓS.."
DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
End If
Else
AccesoUsuarios = DLookup("Id_Acceso", "Usuarios", "Id_Usuario" & Me![TxtLogin])
Select Case AccesoUsuarios
Case 1
MsgBox "ha entrado el administrador", vbInformation, "BIENVENIDO"
DoCmd.OpenForm "Registros", acNormal, "", "", , acNormal
Case 2
MsgBox "Acceso concedido ", vbInformation, "BIENVENIDO"
DoCmd.OpenForm "Registros", acNormal, "", "", , acNormal
Case 3
MsgBox "Acceso concedido para consultas", vbInformation, "BIENVENIDO"
DoCmd.OpenForm "Buscar", acNormal, "", "", , acNormal
End Select
'docmd.openform stdocname, , , stlinkcristeria 'abrimos el formulario correspondiente
DoCmd.Close acForm, Me.Name ' y cerramos el de acceso
End If
End If
End Sub

2 Respuestas

Respuesta
1

Me alegro que solucionaste el tema anterior!

Te paso el código modificado (hice un cambio muy sencillo), lo que tenes que hacer es colocar en el formulario donde introducís la contraseña, un textbox que se llame numintentos

Y lo pones como No Visible.

(Este textbox cumple el rol de la variable que habías creado)

y en el evento load le agregas esto: me.numintentos.value=3

Y ahora si, en el evento click del boton, el código:

Option Compare Database
Option Explicit
Dim AccesoUsuarios As Integer
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, "ATENCIÓN"
Me.TxtLogin.SetFocus
ElseIf Nz(Me.TxtPassword.Value, "") = "" Then
MsgBox "introduzca la contraseña del usuario selleccionado", vbInformation, "ATENCIÓN"
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
me.numintentos.value = me.numintentos.value - 1 ' tu variable ahora es el valor del textbox
MsgBox "la contraseña intrucida es incorrecta" & vbCrLf & _
"le quedan " & me.numintentos.value & " intentos" & vbCrLf & vbCrLf & _
"por favor, introduzca otra", vbExclamation, "INTRODUCCIÓN INCORRECTA"
Me.TxtPassword.Value = ""
Me.TxtPassword.SetFocus
if me.numintentos.value=0 then 'Aquí lo que hace si llega a 0 el numero de intentos
MsgBox "ha superado el numero de intentos", vbCritical, "ADIÓS.."
DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
end if
Else
AccesoUsuarios = DLookup("Id_Acceso", "Usuarios", "Id_Usuario" & Me![TxtLogin])
Select Case AccesoUsuarios
Case 1
MsgBox "ha entrado el administrador", vbInformation, "BIENVENIDO"
DoCmd.OpenForm "Registros", acNormal, "", "", , acNormal
Case 2
MsgBox "Acceso concedido ", vbInformation, "BIENVENIDO"
DoCmd.OpenForm "Registros", acNormal, "", "", , acNormal
Case 3
MsgBox "Acceso concedido para consultas", vbInformation, "BIENVENIDO"
DoCmd.OpenForm "Buscar", acNormal, "", "", , acNormal
End Select
'docmd.openform stdocname, , , stlinkcristeria 'abrimos el formulario correspondiente
DoCmd.Close acForm, Me.Name ' y cerramos el de acceso
End If
End If
End Sub

Contame como te fue!

Respuesta

Exacto, lo que ha ia que hacer era inicializar la variable umero de intentos a 3 y cada vez que se equivoque restarle 1 a esa variable hasta que llegue a 0

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas