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

VBA Access Discussion :

comparaison mot de passe suivant UserName


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut comparaison mot de passe suivant UserName
    bonjour,
    petit problème de codage pour mot de passe

    la table TUsers contient les champ TUsersId et TUsersMDP
    TUsersId correspond à l'utilisateur connecté "prénom.nom"
    TUsersMDP le mot de passe lié à TUsersId

    UserName est récupéré sur le load du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal user As String, usersize As Long) As Long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Form_Load()
    Dim user As String
    Dim usersize As Long
     
    user = Space$(255)
    usersize = Len(user)
    Call GetUserName(user, usersize)
    If usersize > 0 Then
        Me.UserName = Left$(user, usersize)
        Else
        Me.UserName = Null
        End If
    End Sub
    le code suivant est censé comparer le mot de passe entré avec le mot de passe de la table TUsers et ouvrir un autre formulaire si le UserName récupéré par l'API correspond au TUsersId de TUsers


    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
    Private Sub Commande14_Click()
    Dim msgerreur As Variant
        Dim stDocName As String
        Dim stLinkCriteria As String
        Dim sql As String
        Dim rst As DAO.Recordset
     
    sql = "SELECT TUsersId FROM TUsers WHERE TUsersId = " & Chr(34) & Me.UserName & Chr(34)
    rst = CurrentDb.OpenRecordset(sql)
    If (rst.BOF And rst.EOF) = False Then
       If rst![TUsersMDP] = Me.Mot_de_passe Then
            stDocName = "Menu"
            DoCmd.Close
            DoCmd.OpenForm stDocName, , , stLinkCriteria
       Else
             MsgBox "Mot de passe erroné"
       End If
    Else
       msgerreur = MsgBox("Utilisateur non autorisé - Rapprochez-vous de l'administrateur de l'application", vbOKCancel)
    End If
    rst.Close
    End Sub
    en cliquant sur Commande14 ça bloque sur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst = CurrentDb.OpenRecordset(sql)
    par une "erreur de compilation - utilisation incorrecte de la propriété"


    Microsoft DAO 3.6 object library est activé

    pouvez-vous m'éclairer svp ?

    merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Points : 30
    Points
    30
    Par défaut
    Salut

    Jette un oeil à l'instruction SET.

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    set me permet de passer le code mais maintenant en cliquant sur Commande14

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur d'éxécution 3075
    Erreur de syntaxe dans la chaîne dans l'expression 'TUserId = " prénom1.nom1'.
    il y a à première vue un avant avec un espace avant je n'arrive à régler le problème

    ma table TUsers:

    TUsersN° 1 / TUsersId prénom1.nom1 / TUsersMDP 1414
    TUsersN° 2 / TUsersId prénom2.nom2 / TUsersMDP 1111
    TUsersN° 3 / TUsersId prénom3.nom3 / TUsersMDP 1111

    de plus:
    par le débuggeur je m'aperçois que le UserName se compose à l'affichage de avec ce  à la fin

    une idée ?

  4. #4
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    en remplaçant les Chr(34) par des ""
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT TUsersId and TUsersMDP FROM TUsers WHERE TUsersId = " & """ & Me.UserName & """
    le code passe à l'instruction suivante mais:

    en rentrant le mot de passe adéquate à prénom1.nom1 en cliquant sur Commande14 j'obtient le msgbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utilisateur non autorisé - Rapprochez-vous de l'administrateur de l'application
    et si à la place de cliquant sur le bouton je tape manuellement 2 fois sur Entrée j'ai le msgboxcertes il y a un souci mais lequel ?

    merci

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Oubli GetUserName, environ("UserName") fait la même chose
    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
    Private Sub Commande14_Click()
    Dim iStr_MdP as string
     
        msgbox "UserName = " & environ("UserName")
        iStr_MdP = nz(DLookUp("TUsersMDP", "TUsers ", "TUsersId = '" & replace(environ("UserName"), "'", "''") & "'"), "")
        If iStr_MdP <> "" Then
            If iStr_MdP = Mot_de_passe.value Then
                DoCmd.Close
                DoCmd.OpenForm "Menu"   
            Else
                MsgBox "Mot de passe erroné"
            End If
        Else
            MsgBox "Utilisateur non autorisé - Rapprochez-vous de l'administrateur     de l'application", vbOKCancel
        End If
    End Sub
    [Access] Les bases du débogage => ici

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    Novice essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.UserName=Left$(user,usersize-1)
    Le usersize contient le nombre de caractères retournés y compris le caractère de fin de chaine CHR(0). Ou alors utilises
    comme le propose Kloun.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/03/2014, 14h34
  2. [MySQL] Comparaison de mots de passe PHP-MySQL
    Par jaymzwise dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/07/2007, 14h31
  3. Droit d'accès d'un utilisateur suivant un mot de passe
    Par Tiroy dans le forum Sécurité
    Réponses: 1
    Dernier message: 12/12/2006, 16h30
  4. [Delphi] Lecture et comparaison de mots de passe
    Par Jayceblaster dans le forum Langage
    Réponses: 6
    Dernier message: 22/04/2006, 12h21
  5. Encodage et comparaison de mot de passe
    Par SuperCed dans le forum Sécurité
    Réponses: 4
    Dernier message: 27/05/2005, 12h01

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