IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Formulaire de login avec mot de passe


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Points : 56
    Points
    56
    Par défaut Formulaire de login avec mot de passe
    Bonjour,

    J'ai récuperé ce code dans la FAQ, mais il bug à cet endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomUtilisateur = '" & Me.txt_user & "' AND MdpUtilisateur ='" & Me.txt_Password & "';"
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub Commande9_Click()
     
    Me.Requery
    Dim sql As String
    Dim rs As DAO.Recordset
    Static i As Byte
     
    sql = "SELECT * FROM Utilisateur WHERE NomUtilisateur = '" & Me.txt_user & "' AND MdpUtilisateur ='" & Me.txt_Password & "';"
    Set rs = CurrentDb.OpenRecordset(sql)
    If Not rs.EOF Then
    If NomUtilisateur = 1 And MotDePasse = MdpUtilisateur Then
      DoCmd.OpenForm "PageAdministrateur", acNormal, , , , acWindowNormal
      DoCmd.Close acForm, "Login"
    Else
      MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
    End If
    If NomUtilisateur > 1 And MotDePasse = MdpUtilisateur Then
      DoCmd.OpenForm "PageUtilisateur", acNormal, , , , acWindowNormal
    Else
    MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
    End If
    End If
    Debug.Print
     
     
    End Sub
    J'ai changer un peu le code, parce que je dois rediriger vers un formulaire différent l'administrateur et l'utilisateur.

    Merci pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Bonjour benjamin002,

    Quelle est la message d'erreur?

    Dans une première vue, je pense que il faudrait changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Dim sql As String
    Dim rs As DAO.Recordset
    Static i As Byte
     
    sql = "SELECT * FROM Utilisateur WHERE NomUtilisateur = '" & Me.txt_user & "' AND MdpUtilisateur ='" & Me.txt_Password & "';"
    Set rs = CurrentDb.OpenRecordset(sql)
    If Not rs.EOF Then
        If NomUtilisateur = 1 And MotDePasse = MdpUtilisateur Then
              DoCmd.OpenForm "PageAdministrateur", acNormal, , , ,    acWindowNormal
              DoCmd.Close acForm, "Login"
        ElseIf NomUtilisateur > 1 And MotDePasse = MdpUtilisateur Then
              DoCmd.OpenForm "PageUtilisateur", acNormal, , , , acWindowNormal
        End If
    Else
        MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
    End If
    Debug.Print
    Dans ton code, s'il ne trouve pas le combinaison Identifiant/ MDP, t'arrive à rs.EOF et le code ne dit quoi faire...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Points : 56
    Points
    56
    Par défaut
    Bonjour Marc 27,

    Il me dit "Erreur de compilation Membre de méthode ou de données introuvable" en pointant "Me.txt_user" (je suppose que le "Me.txt_Password" pose pb aussi).

    C'est une ligne de code que j'ai récuperer mais il est vrai que je n'en comprend le fonctionnement que de la moitier. Cette partie me reste incomprise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE NomUtilisateur = '" & Me.txt_user & "' AND MdpUtilisateur ='" & Me.txt_Password & "';"
    cela provient de la requête en sql, je comprend qu'elle fait parti de la condition mais je ne comprend pas ce qu'elle fait exactement.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    txt_user et txt_Password sont bien des champs de ton formulaire, pas des variables?

    Essaye de mettre .value (Me.txt_user.Value et Me.txt_Password.Value) et de verifier si la Référence DAO est bien marqué dans Menu/Outils/Références.

    Je vois aussi que les noms d'utilisateur sont des chiffres:
    enleve les quotes ':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE NomUtilisateur = " & Me.txt_user & " AND MdpUtilisateur ='" & Me.txt_Password & "';"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Points : 56
    Points
    56
    Par défaut
    ok je viens de comprendre le "Me.txt_..." en gros il fallait que je mette le nom de mes champs (en ce qui concerne la DAO, elle était déjà cochée). Cela donne donc ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT * FROM Utilisateur WHERE NomUtilisateur = '" & Me.Identifiant.Value & "' AND MdpUtilisateur ='" & Me.MotDePasse.Value & "';"
    Sauf qu'il me met: "(Identifiant, Mot de Passe) incorrect "

    C'est donc que mes conditions n'ont pas été vérifier, il m'affiche ma MsgBox. Or c'est le bon login, le bon mot de passe, les noms de champs sont correct.

    What's wrong?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    T'as déjà verifié le mot de passe lors de la requete DAO.
    Elle n'est plus acessible. Il te suffit de verifier le nom d'utilisateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If NomUtilisateur = 1 Then
              DoCmd.OpenForm "PageAdministrateur", acNormal, , , ,    acWindowNormal
              DoCmd.Close acForm, "Login"
        ElseIf NomUtilisateur > 1 Then
              DoCmd.OpenForm "PageUtilisateur", acNormal, , , , acWindowNormal
        End If
    Mais il faudra aussi faire les changements que j'ai écris dans mon premier post

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Points : 56
    Points
    56
    Par défaut
    Helas cela bloque toujours, j'ai toujours le message de ma MsgBox qui s'affiche.

    Je te laisse le code que j'ai mis, avec les modifications que tu as apporté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Commande9_Click()
     
    Dim sql As String
    Dim rs As DAO.Recordset
     
    sql = "SELECT * FROM Utilisateur WHERE NomUtilisateur = '" & Me.Identifiant & "' AND MdpUtilisateur ='" & Me.MotDePasse & "';"
    Set rs = CurrentDb.OpenRecordset(sql)
    If Not rs.EOF Then
        If NomUtilisateur = 1 Then
              DoCmd.OpenForm "PageAdministrateur", acNormal, , , , acWindowNormal
              DoCmd.Close acForm, "Login"
        ElseIf NomUtilisateur > 1 Then
              DoCmd.OpenForm "PageUtilisateur", acNormal, , , , acWindowNormal
        End If
    Else
        MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
    End If
    Debug.Print
    End Sub

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Mon dernier essaye serait de enlever les quotes (dans le code, NomUtilisateur semble d'être des numéros).

    Le champ NomUtilisateur dans ta table est defini comme numéro ou texte?
    S'il est du numéro, il faut enlever les quotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT * FROM Utilisateur WHERE NomUtilisateur = " & Me.Identifiant & " AND MdpUtilisateur ='" & Me.MotDePasse & "';"

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Points : 56
    Points
    56
    Par défaut
    Le champs NomUtilisateur est définis comme texte mais dans un autre forum quelqu'un m'a laissé ceci:

    Dans les propriétés de ma zone de liste déroulante le contenu est le suivant "SELECT Utilisateur.CodeUtilisateur, Utilisateur.NomUtilisateur FROM Utilisateur ORDER BY [NomUtilisateur]; "

    Ceci signifie qu'il y a bien le CodeUtilisateur comme 1e colonne de ta liste déroulante (l'assistant propose toujours la clé primaire par défaut mais cachée = la colonne fait 0cm).

    Citation:
    depuis que j'ai décidé de mettre une zone de liste déroulante

    Si je comprends bien, c'est la liste déroulante qui fait que ça ne marche plus.

    Apparemment, ta liste s'appelle Identifiant ?
    Donc si la clé primaire de l'utilisateur Admin est, par exemple, 1
    et que tu choisis Admin dans la liste, il faudra tester :

    Code :
    If Identifiant = 1 Then
    J'ai essayé sans les quote mais il me met un message d'erreur:

    "Erreur d'éxecution '3464' Type de données incompatible dans l'expression du critère"

    et me surligne en jaune cette partie du code: "Set rs = CurrentDb.OpenRecordset(sql)"

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Si c'est du texte il faut avoir les quotes...

    Me.Identifiant est une liste deroulant ou une zone de texte?
    Si c'est une liste, combien de colonnes?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Points : 56
    Points
    56
    Par défaut
    Me.Identifiant est une zone de liste déroulante.

    Je ne peux pas te dire combien il y aura d'utilisateur, ce que je suis sûr pour le moment c'est qu'il y aura un administrateur et des utilisateurs.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Je dis des colonnes (id, nom, ...)
    Quel est la colonne avec le nom d'utilisateur? Est bien la colonne dont la liste prend son Valeur?

    Si c'est une liste (Id, Nom) et tu veux utiliser les noms,
    il faudra faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.Identifiant.Column(1)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Points : 56
    Points
    56
    Par défaut
    tu avais raison en fait dans ma table Utilisateur, j'ai dans l'ordre une colonne CodeUtilisateur, une colonne NomUtilisateur et une colonne MdpUtilisateur.

    Depuis que j'ai mis
    Me.Identifiant.Column(1)
    Ma page administrateur s'ouvre, en revanche, quand je met un login Utilisateur, il m'ouvre aussi la page administrateur et non Utilisateur.

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Essaye de mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        If Me.Identifiant = 1 Then
              DoCmd.OpenForm "PageAdministrateur", acNormal, , , , acWindowNormal
              DoCmd.Close acForm, "Login"
        ElseIf Me.Identifiant > 1 Then
              DoCmd.OpenForm "PageUtilisateur", acNormal, , , , acWindowNormal
        End If
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        If NomUtilisateur = 1 Then
              DoCmd.OpenForm "PageAdministrateur", acNormal, , , , acWindowNormal
              DoCmd.Close acForm, "Login"
        ElseIf NomUtilisateur > 1 Then
              DoCmd.OpenForm "PageUtilisateur", acNormal, , , , acWindowNormal
        End If
    Il faut utiliser les champs de ton form après avoir fermé la connecxion DAO

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup!
    cela fonctionne, c'est parfait

    Je te remercie de m'avoir donner de ton temps.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Tu peux mettre un , non?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ouverture formulaire avec mot de passe
    Par man18 dans le forum Sécurité
    Réponses: 2
    Dernier message: 25/01/2007, 17h19
  2. Réponses: 9
    Dernier message: 10/01/2007, 11h18
  3. Ouverture formulaire avec mot de passe
    Par mavean dans le forum Access
    Réponses: 9
    Dernier message: 08/06/2006, 14h58
  4. Réponses: 3
    Dernier message: 25/11/2005, 13h06
  5. Fenêtre avec login et mot de passe
    Par keawee dans le forum ASP
    Réponses: 5
    Dernier message: 29/08/2005, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo