Formulaire de connexion avec mot de passe

Résolu
floriandu77700 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
floriandu77700 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
    1. floriandu77700 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      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.
      0
    2. blux Messages postés 5031 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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 & "'"
      0
    3. floriandu77700 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      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 & "
      0