VBA:Un code qui ne marche pas!

sergeszebe Messages postés 185 Statut Membre -  
sergeszebe Messages postés 185 Statut Membre -
salut a tous!
voila mon pb:
T_User(login,mot_de_passe)
je voudrait que sur clic au boutons connexion,si le login et le mot de pase sont correct,le formulaire FM_Evaluation s'ouvre sinono au bout d'une 3eme tentitive le programme s'arrete.
mais il me dit erreur:type definie par l'utilisateur non definie au niveau de dim bd as database

Private Sub connexion_Click()
Dim Sql As String
Dim rs As Recordset
Static i As Byte
Dim bd As Database ----> c ici l'erreur

Set rs = bd.OpenRecordset(Sql)
Sql = "SELECT login,[mot_de_passe] FROM T_User WHERE login = '" & Me.txt_user & "' AND [mot_de_passe]='" & Me.txt_pass & "';"

If Not rs.EOF Then
DoCmd.OpenForm "FM_Evaluation", acNormal, , , , acWindowNormal
DoCmd.Close acForm, "F_CONNEXION"
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és", vbCritical
DoCmd.Quit
End If
Me.Requery
End Sub

24 réponses

  • 1
  • 2
  1. Utilisateur anonyme
     
    Bonjour,

    Vérifie si tu as des références manquantes, si oui décoches les. Vérifies que la référence m$ dao est bien cochée et mets la le + haut possible...

    0
  2. sergeszebe Messages postés 185 Statut Membre 2
     
    je l'ai fait mais ça n'a rien changé j'ai coché DAO 3.6 onbjet library et j'ai mie le plus haut possible.
    0
  3. Utilisateur anonyme
     
    Re,

    mets alors :
    Dim bd As dao.Database

    Ca marche ?
    0
  4. sergeszebe Messages postés 185 Statut Membre 2
     
    non il me met erreur 91
    veriable objet ou variable de bloc with non definie
    au niveau de set rs=bd open recorset
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    Bon, il faut mettre dao aussi sur ton rs je pense.

    Donc : Dim rs As dao.Recordset

    0
    1. Utilisateur anonyme
       
      Je viens de relire ton premier message ; tu aurais pas des fois oublié quelquechose ???

      set db=currentdb

      0
  7. sergeszebe Messages postés 185 Statut Membre 2
     
    eh! oui je l'ai oublié mais
    bon ça ne marche toujours pas ça met l'erreur 91 que j'ai enoncé au dessus.c'est vraiment chiant
    0
  8. Utilisateur anonyme
     
    tu peux remettre ton code modifié que l'on y voit plus clair STP ?
    0
  9. sergeszebe Messages postés 185 Statut Membre 2
     
    Private Sub connexion_Click()
    Dim Sql As String
    Dim rs As DAO.Recordset
    Static i As Byte
    Dim bd As DAO.Database
    Set db = CurrentDb
    Set rs = bd.OpenRecordset(Sql)
    Sql = "SELECT login,[mot_de_passe] FROM T_User WHERE login = '" & Me.txt_user & "' AND [mot_de_passe]='" & Me.txt_pass & "';"
    If Not rs.EOF Then
    DoCmd.OpenForm "FM_Evaluation", acNormal, , , , acWindowNormal
    DoCmd.Close acForm, "F_CONNEXION"
    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és", vbCritical
    DoCmd.Quit
    End If
    Me.Requery
    End Sub
    0
  10. Utilisateur anonyme
     
    Re,

    Je pense que l'on va y arriver :O)

    Tu mets :
    Set rs = bd.OpenRecordset(Sql)
    et ensuite tu mets sql="....."

    Ca ne peut pas aller, faut lui dire avant ce que contient ton sql.

    0
  11. sergeszebe Messages postés 185 Statut Membre 2
     
    bah! c ce que j'ai fait avant mais
    teebo m'a dit que c'est en l'envers il faut mettre le set avant le sql.
    0
  12. Utilisateur anonyme
     
    Si tu lui dit Set rs = bd.OpenRecordset(Sql) , il contient quoi le rs ?
    Que neni, nada, il ne connait pas sql, il sait juste que c'est une chaine de caractère, plus précisemment que tu l'as déclaré en tant que telle.

    Alors ça donne quoi ?
    0
  13. sergeszebe Messages postés 185 Statut Membre 2
     
    ça tourne pas les gard!
    franchement je comprend plus rien une journée entierre! je suis bete ou c'est difficile à faire
    0
  14. Utilisateur anonyme
     
    Bon, tu as un message d'erreur ?

    0
  15. sergeszebe Messages postés 185 Statut Membre 2
     
    penses-tu qu'il faut deja egaler les valeur de login et mot de passe dans la requette?
    on peut simplement dire

    sql=select login,mot_de_passe from T_User!
    et apres on dira
    if not EOF T_User
    move first
    if
    txtlogin=login and txtmp=mp
    alors open
    sinon
    msg erreure
    i=i+1
    movenext.......
    pour i=3 quit
    0
  16. sergeszebe Messages postés 185 Statut Membre 2
     
    oui!
    erreur 91 variable objet ou variable de bloc with non definie:

    Private Sub connexion_Click()
    Dim Sql As String
    Static i As Byte
    Dim bd As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Sql = "SELECT login,[mot_de_passe] FROM T_User WHERE login = '" & Me.txt_user & "' AND [mot_de_passe]='" & Me.txt_pass & "';"
    Set rs = bd.OpenRecordset(Sql)----> ICI
    If Not rs.EOF Then
    DoCmd.OpenForm "FM_Evaluation", acNormal, , , , acWindowNormal
    DoCmd.Close acForm, "F_CONNEXION"
    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és", vbCritical
    DoCmd.Quit
    End If
    Me.Requery
    End Sub
    0
    1. Utilisateur anonyme
       
      Bon on va essayé ça, tu fais un copié collé du code ci-dessous, et testes :
      Private Sub connexion_Click()
      Dim Sql As String
      Static i As Byte
      Dim bd As DAO.Database
      Dim rs As DAO.Recordset
      Set db = CurrentDb
      Sql = "SELECT login,[mot_de_passe] FROM T_User ;"
      Set rs = bd.OpenRecordset(Sql)
      dim nb as integer
      nb=rs.recordcount
      msgbox nb
      end sub()

      Ca affiche quoi ?
      0
  17. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    J'ai jamais dit de mettre dans ce sens!
    Et ensuite tu comprendrais peut être un peu mieux si tu n'avais pas posé deux fois la même question!
    0
  18. sergeszebe Messages postés 185 Statut Membre 2
     
    j'ai fais le copier collé ça affiche :
    l'erreur 91 :variable objet ou variable de bloc with non definie
    : au meme endroit Set rs = bd.OpenRecordset(Sql)
    0
  19. Utilisateur anonyme
     
    Bon, je comprends pas là :-(

    Change la ligne qui génère l'erreur par :
    Set rs = bd.OpenRecordset("SELECT login,[mot_de_passe] FROM T_User ",dbOpenDynaset, dbReadOnly)
    0
    1. sergeszebe Messages postés 185 Statut Membre 2
       
      salut! j'ai remplacer le code par la ligne que tu ma donné ca ne marche pas.
      il doit bien y avoir une solution?
      est-ceque t'a du temps de crere toi ta table et meme 3 membre et leur mot de passe et faire le test sur 2 formulaire? ça marche?
      merci
      0
  20. Utilisateur anonyme
     
    Putain, j'ai de la peau de sosse devant les yeux !!!!!!!
    Je t'ai dis de mettre :
    Dim bd As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb

    Corriges celui que tu veux, mais les 2 doivent être pareil...
    0
  • 1
  • 2