Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide avec VBA pour MsAccess

Problème de requete

Sujet résolu
    15 juillet 2020 à 10:09:49

    Bonjour à tous,

    J'ai actuellement un soucis avec une de mes requêtes qui déconne totalement car lorsque j'insère le mot de passe qui est sensé être Test123 celle-ci accepte n'importe quelle entrée et la redirige vers l'autre interface au lieu de la bloquée. 

    Voici mon code qui lance la requete ainsi qu'un screen de ma table mot de passe : 

    Sub VerifForm()
    Dim counter As Integer
    Dim Password As String
    Dim rs As DAO.Recordset
    Dim db As Database
    Dim result As String
    Set db = CurrentDb
    requestSQL = "SELECT Motdepasse.[PASSWORD]FROM Motdepasse;"
    Set rs = db.OpenRecordset(requestSQL)
    result = rs.Fields("PASSWORD").Value
    Password = InputBox("Veuillez saisir le mot de passe administrateur ou cliquez sur annuler", "Vérification du mot de passe", "*")
    End Sub
    Private Sub Commande9_Click()
    Call VerifForm
    If Password = result Then
    DoCmd.Maximize
    DoCmd.ShowToolbar "Menu Bar", acToolbarYes
    DoCmd.ShowToolbar "Database", acToolbarYes
    DoCmd.ShowToolbar "Relationship", acToolbarYes
    DoCmd.ShowToolbar "Ribbon", acToolbarYes
    Call DoCmd.SelectObject(acTable, , True)
    DoCmd.Close acForm, "Formulaire1"
    DoCmd.OpenForm "GESTION Service PSAV", DataMode:=2
    status = "admin"
    ElseIf Password = "" Then
        Exit Sub
    Else
        DoCmd.Beep
        MsgBox "Mauvais Mot de Passe"
    End If
    End Sub

    Merci d'avance de votre aide ^^

    Cordialement,

    Sunshio 
    • Partager sur Facebook
    • Partager sur Twitter
      15 juillet 2020 à 18:36:58

      Password et result ne sont connu que dans Verifform() donc le test fait dans commande9_click  (if Password=result)  est selon moi toujours vrai.
      Il faudrait plutot que Verifform() renvoie directement True ou False (le résultat de la comparaison) et que tu vérifies le résultat de l'appel à cette fonction dans Commande9_click():

      Sub VerifForm() as Boolean
          Dim counter As Integer
          Dim Password As String
          Dim rs As DAO.Recordset
          Dim db As Database
          Dim result As String
          Set db = CurrentDb
          requestSQL = "SELECT Motdepasse.[PASSWORD] FROM Motdepasse;"
          Set rs = db.OpenRecordset(requestSQL)
          result = rs.Fields("PASSWORD").Value
          Password = InputBox("Veuillez saisir le mot de passe administrateur ou cliquez sur annuler", "Vérification du mot de passe", "*")
          VerifForm=(result=Password) 'si result = Password, renvoie True, sinon False
      End Sub
      Private Sub Commande9_Click()
          If VerifForm() Then
              DoCmd.Maximize
              DoCmd.ShowToolbar "Menu Bar", acToolbarYes
              DoCmd.ShowToolbar "Database", acToolbarYes
              DoCmd.ShowToolbar "Relationship", acToolbarYes
              DoCmd.ShowToolbar "Ribbon", acToolbarYes
              Call DoCmd.SelectObject(acTable, , True)
              DoCmd.Close acForm, "Formulaire1"
              DoCmd.OpenForm "GESTION Service PSAV", DataMode:=2
              status = "admin"
          Else
              DoCmd.Beep
              MsgBox "Mauvais Mot de Passe"
          End If
      End Sub

      Après, si on veut gérer plus de cas, on peut renvoyer un entier plutôt qu'un booléen (on renvoie: 0= mot de passe correct; 1 = mauvais mot de passe; 2 = mot de passe vide) et il faudra gérer chacun de ces cas (un peu comme tu avais fait)
      • Partager sur Facebook
      • Partager sur Twitter
        16 juillet 2020 à 9:26:21

        Salut Umfred,


        Tout d'abord merci pour ta réponse mais il n'arrive pas à compiler car il ne reconnait pas la fonction VerifForm qui est gêné par la présence du as Boolean au début de la déclaration de celle-ci (Quelle galère le return en VBA :lol:).

        Si tu as une idée pour pouvoir corriger ce problème qui me court dans la tête depuis plusieurs jours, je reprends volontiers

        Merci d'avance de ton aide encore une fois, 

        Sunshio 

        Screenshot de l'erreur : 

        • Partager sur Facebook
        • Partager sur Twitter
          16 juillet 2020 à 10:35:16

          arf oublie de ma part, remplacer Sub par Function tout simplement
          • Partager sur Facebook
          • Partager sur Twitter
            16 juillet 2020 à 11:24:19

            Encore Merci pour tout tes messages qui m'ont bien aidé ;) 

            Sunshio 

            • Partager sur Facebook
            • Partager sur Twitter

            Aide avec VBA pour MsAccess

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown