Access - Login en acces

   
Vista:

Login en acces

Publicado por Marceloit (11 intervenciones) el 24/09/2015 01:06:47
Hola comunidad , les comento que tengo una base de datos que tiene usuario y contraseña , dependiendo el usuario me abre xxx formulario , hasta ahi todo bien pero me gustaria agregar otros 2 usuarios pero no se como programar el codigo que les adjunto a continuacion , tambien tengo 2 modulos y 3 tablas se las coloco en foto para ver si alguien me puede ayudar . Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Option Compare Database
Option Explicit
Dim NumIntentos 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, "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 > 1 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, "ADIOS..."
                     DoCmd.Quit
                End If
 
            Else
                If DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![Txtlogin]) = 1 Then
 
                        MsgBox "BIENVENIDO ADMINISTRADOR", vbInformation, "BIENVENIDO ADMINISTRADOR"
                        Call Admin
 
                Else
 
                        MsgBox "BIENVENIDO FINANZAS", vbInformation, "BIENVENIDO FINANZAS"
                        Call Usuar
 
 
                          End If
 
 
                End If
                        'DoCmd.OpenForm stDocName, , , stLinkCriteria 'Abrimos el formulario correspondiente
                        DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
            End If
 
End Sub
 
Function Admin()
On Error GoTo Admin_Err
 
    DoCmd.OpenForm "INGRESO", acNormal, "", "", , acNormal
 
 
Admin_Exit:
    Exit Function
 
Admin_Err:
    MsgBox Error$
    Resume Admin_Exit
 
End Function
 
Function Usuar()
On Error GoTo Usuar_Err
 
    DoCmd.OpenForm "Formulario_Finanzas", acNormal, "", "", , acNormal
 
 
Usuar_Exit:
    Exit Function
 
Usuar_Err:
    MsgBox Error$
    Resume Usuar_Exit
 
End Function





LOS MODULOS SON ESTOS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Compare Database
 
Public MyPassword
Public Function KeyCode(Password As String) As Long
   ' This function will produce a unique key for the
   ' string that is passed in as the Password.
   Dim I As Integer
   Dim Hold As Long
 
   For I = 1 To Len(Password)
      Select Case (Asc(Left(Password, 1)) * I) Mod 4
      Case Is = 0
         Hold = Hold + (Asc(Mid(Password, I, 1)) * I)
      Case Is = 1
         Hold = Hold - (Asc(Mid(Password, I, 1)) * I)
      Case Is = 2
         Hold = Hold + (Asc(Mid(Password, I, 1)) * _
            (I - Asc(Mid(Password, I, 1))))
      Case Is = 3
         Hold = Hold - (Asc(Mid(Password, I, 1)) * _
            (I + Len(Password)))
   End Select
   Next I
   KeyCode = Hold
End Function





Captura1
Captura2
Captura3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Login en acces

Publicado por Enrique Heliodoro (1663 intervenciones) el 24/09/2015 08:46:13
Una vez que se acepte al usuario (login + pass correctos) se evaluaría al usuario (por nombre, ID o lo que fuere) y ese dato se utilizaría con un Select Case:

1
2
3
4
5
6
7
8
9
10
11
Select Case  Me![Txtlogin]
Case "ADMINISTRADOR"
     DoCmd.OpenForm "INGRESO"
 
Case "FINANZAS"
     DoCmd.OpenForm "Formulario_Finanzas"
Case "Manolo"
     DoCmd.OpenForm "Formulario_Manolo"
Case "Usuario comun"
     DoCmd.OpenForm "Formulario_?????"
End Select


Con El método anterior, se podrán crear tantas entradas como se precisen, bien por usuario personalizado (ejemplo: Case "Manolo") o por subgrupos si se crean (Case "Usuario comun"), eso ya es volutivo

Lo anterior no sigue la actual línea de crear una función por usuario (algo que a mi particular juicio me parece absolutamente prescindible, solo sirve 'para hacer bulto')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login en acces

Publicado por Marceloit (11 intervenciones) el 24/09/2015 18:48:19
Hola Enrique:
Te agradesco la informacion , es lo que necesito que dependiendo el usuario se abra un informe xxx , te pediria si me podes indicar los paso para poder colocar este codigo , desde ya muchas gracias , o si bien si puedo usar lo que ya tenia y adjuntar este codigo .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login en acces

Publicado por Enrique Heliodoro (1663 intervenciones) el 24/09/2015 23:23:18
Según salen numeradas las líneas, a partir de la línea 33 (en la copia posteada aquí es la 1) se podría utilizar en lugar del actual:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Else
                If DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![Txtlogin]) = 1 Then
 
                        MsgBox "BIENVENIDO ADMINISTRADOR", vbInformation, "BIENVENIDO ADMINISTRADOR"
                        Call Admin
 
                Else
 
                        MsgBox "BIENVENIDO FINANZAS", vbInformation, "BIENVENIDO FINANZAS"
                        Call Usuar
 
 
                          End If
 
 
                End If
                        'DoCmd.OpenForm stDocName, , , stLinkCriteria 'Abrimos el formulario correspondiente
 
                        DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
Select Case Me![Txtlogin]
         ......
         .......
End Select
 DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
 
            End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Login en acces

Publicado por Marceloit (11 intervenciones) el 24/09/2015 23:32:37
Enrique, muchas gracias por tu tiempo , y gracias a la comunidad , te comento que era un proyecto pero mi empresa me lo cancelo , de todas formas lo probare para aprender un poco mas , muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar