Formulaire de connexion avec mot de passe [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
12 juin 2013
-
Messages postés
3
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
12 juin 2013
-
Bonjour,

Etant novice en matière de VBA, j'ai récupéré sur Internet un code permettant à mes utilisateurs access de se connecter avec un mot de passe.

J'ai donc copier ce code et l'ai adapté à ma BDD, or je rencontre un problème lors de l'exécution de la procédure et je ne sais pas comment la résoudre.

Si quelqu'un a une solution, je suis preneur.

Voici le code et le message d'erreur, je vous remercie d'avance :

Private Sub Connexion_Click()
Me.Requery
Dim sql, User_id   As String
Dim rs As DAO.Recordset
Static i As Byte
sql = "SELECT * FROM T_Utilisateur WHERE ID_Utilisateur =  Me.F_Loggin_ID  AND Pass_Utilisateur = Me.F_Loggin_Pass"
Set rs = CurrentDb.OpenRecordset(sql)
If Not rs.EOF Then
  DoCmd.OpenForm "F_Formulaire de navigation", acNormal, , , , acWindowNormal
  DoCmd.Close acForm, "F_Loggin"
  User_id = rs("ID_Utilisateur").Value
Else
  MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
  i = i + 1
End If
If i = 3 Then
MsgBox "Vous avez dépassé le nombre de tentatives autorisées", vbCritical
DoCmd.Quit
End If
End Sub


" ERREUR D'EXECUTION '3061' :
Trop peu de paramètres. 2 attendu."

Ligne "Set rs = CurrentDb.OpenRecordset(sql)" en surbrillance jaune

1 réponse

Messages postés
15534
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 janvier 2021
1 440
Bonjour,

integrez vos variables dans votre requete:

Private Sub Connexion_Click()
    Dim sql, User_id   As String
    Dim rs As DAO.Recordset
    Static i As Byte
    
    Me.Requery
    sql = "SELECT * FROM T_Utilisateur WHERE ID_Utilisateur =" & Me.F_Loggin_ID & " AND " & Pass_Utilisateur & "=" & Me.F_Loggin_Pass
    Set rs = CurrentDb.OpenRecordset(sql)
    If Not rs.EOF Then
        DoCmd.OpenForm "F_Formulaire de navigation", acNormal, , , , acWindowNormal
        DoCmd.Close acForm, "F_Loggin"
        User_id = rs("ID_Utilisateur").Value
    Else
        MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
        i = i + 1
    End If
    If i = 3 Then
        MsgBox "Vous avez dépassé le nombre de tentatives autorisées", vbCritical
        DoCmd.Quit
    End If
End Sub
Messages postés
3
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
12 juin 2013

Bonjour, merci de votre réponse

J'ai tenté de modifier la requête mais j'ai toujours une erreur :

Erreur de syntaxe (opérateur absent) dans l'expression
"ID_Utilisateur =JD AND =test"


JD étant l'identifiant et test le mot de passe..

Je dois vous avouer que je ne comprend pas encore ces problèmes de syntaxe dans les requêtes.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 004
Salut,

ton pass_utilisateur doit être dans la requête et il est vraisemblable que le password soit une chaine, elle doive être 'enquotée'...

sql = "SELECT * FROM T_Utilisateur WHERE ID_Utilisateur =" & Me.F_Loggin_ID & " AND Pass_Utilisateur = '" & Me.F_Loggin_Pass & "'"
Messages postés
3
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
12 juin 2013

Salut,

Merci pour votre aide f894009 et blux , la requête fonctionne, j'ai juste modifier un léger détail :

sql = "SELECT * FROM T_Utilisateur WHERE ID_Utilisateur =" & Me.F_Loggin_ID & "' AND Pass_Utilisateur = '" & Me.F_Loggin_Pass & "'"

' après la chaîne : Me.F_Loggin_ID & "