¿Cómo creo un login en access?

Tengo el siguiente código necesito que al ingresar la contraseña incorrecta vaya restando el numero de intentos que en este caso serian 3 por favor necesito repuesta a mi solicitud de Ante mano Gracias

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, "ATENCION"
        Me.TxtLogin.SetFocus
    ElseIf Nz(Me.TxtPassword.Value, "") = "" Then
            MsgBox "Introduzca la contraseña del usuario seleccionado", vbInformation, "ATENCION"
            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 introducida 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, "Intentelo Dentro de un Rato..."
                    DoCmd.Close acForm, Me.Name

End if

2 Respuestas

Respuesta
1

Puedes hacerlo de dos formas:

1ª/ Creas un cuadro de texto oculto en tu formulario, lo inicias en 0 y cada vez que metas una contraseña errónea le aumentas una unidad, y con el código controlas que el valor de ese cuadro de texto oculto no supere el número de intentos. Puedes verlo en este ejemplo: https://dl.dropboxusercontent.com/u/7400954/WebAccess/Pdf/EjemplosSeguridad/Contrase%C3%B1aIntentos.pdf 

2ª/ Creas una variable pública, en un módulo independiente al formulario (Public numIntentos as Byte, por ejemplo), la inicias a 0 al cargar el formulario (numIntentos=o en el evento form_load), y cada vez que falles la contraseña le aumentas una unidad (numIntentos=numIntentos +1)

Un saludo.


Un nuevo foro de access, visítanos: http://nksvaccessolutions.com/Foro/ 

Gracias por la información me ha servido de mucho ahora tengo otra duda

Tengo un formulario en el cual tengo un buscador, tengo lo siguiente txtbox el cual llame txtbuscar y botón btnbuscar además tengo un cuadfro independiente el cual puse Lista1 y en esa lista en sus propiedades puse en después de actualizar lo siguiente:

Private Sub Lista1_AfterUpdate()
Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ID Codigo] = " & Str(Nz(Me![Lista1], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Y al botón buscar e puesto:

Lista1.Requery

Pero lo que quisiera que de la lista que tengo a la hora de poner un dato que no tenga en existencia aparezca un mensaje que me diga que el libro no exista y de estar que me mande el mensaje de búsqueda exitosa. Me podría ayudar en esta parte por favor.

Esta duda no tiene nada que ver con el tema "¿Cómo creo un login en access?"

Plantéala en una nueva pregunta.

Respuesta

Supongo por lo que pones que tienes un cuadro de texto oculto llamado Numintentos. Si es así ponle como valor predeterminado 0. Yo lo pondría así

If Nz(Me.txtlogin.Value, "") = "" Then
        MsgBox "Seleccione un nombre de usuario de la lista para acceder", vbInformation, "ATENCION"
        Me.txtlogin.SetFocus
ElseIf Nz(Me.txtpassword.Value, "") = "" Then
            MsgBox "Introduzca la contraseña del usuario seleccionado", vbInformation, "ATENCION"
            Me.txtpassword.SetFocus
End If

If DLookup("password", "usuarios", "[id_usuario]=forms!usuarios!txtlogin") <> Forms!usuarios!txtpassword Then
numintentos = Nz([numintentos]) + 1
    If numintentos < 3 Then
    MsgBox "Fallaste"
    ElseIf numintentos = 3 Then
    MsgBox "se acabo"
    DoCmd.Close
    End If
ElseIf DLookup("password", "usuarios", "[id_usuario]=forms!usuarios!txtlogin") = Forms!usuarios!txtpassword Then
    MsgBox "ya era hora, te ha costado"
End If

Así, te va contando los intentos. Si llega a 3 cierra el formulario Usduarios, y si acierta, ¡Ay, si acierta!

Por cierto he supuesto que Txtlogin es un cuadro combinado con dos columns y que la columna principal es la de Id_Usuario, y que el TXTpassword es otro combinado que solo tiene la columna Password

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas