[VBA ACCESS]Lecture des valeurs d'une table

petitcatenaire Messages postés 17 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 9 février 2009 - 6 déc. 2008 à 14:56
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 - 6 déc. 2008 à 23:51
Bonjour à tous je suis débutant et je travaille sur Access 2000 et je souhaiterais tout simplement recuperer tous les nombres presentant ce critere
"Select Revue From abonnement where ID = "IDsaisie" "
Mais bien sur en langage VBA . . . Je ne sais pas comment m'y prendre de plus j'aimerais apres exploiter tout ces résultats afin d'afficher dans une zone de liste les noms des revue qui correspond a la reference que la requete si dessus correspond

Si je manque de clareté j'en suis desole et je suis pret a donner toutes les infos qu'ils vous ai necessaires

5 réponses

cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
6 déc. 2008 à 20:48
Bonjour petitcatenaire


Le Sub ci-dessous charge la zone de liste maListe.  :

Sub chargerListe
   Dim rst As RecordSet
   Dim dbs As Database
   Dim sqlRq As String
   Dim liste As String   sqlRq "Select Revue From abonnement where ID ""IDsaisie"""
   Set dbs = CurrentDb
   Set rst = dbs.OpenRecordset(sqlRq)
   With rst
      Do Until .EOF
           liste = liste & ";" & !Revue
           .MoveNext
      Loop
      .Close
   End With
   dbs.Close
   maListe.RowSource = Mid(liste, 2)
   Me.Requery
End Sub

Vérifie que la propriété Origine source de la zone de liste est bien Liste valeurs

Amicalement
0
petitcatenaire Messages postés 17 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 9 février 2009
6 déc. 2008 à 21:17
Je suis un debutant dans access et je dois avouer que je ne comprend pas ton code comment il fonctionne ce qu'il fait et comment cela ne serait pas trop demander de mettre des commentaires ? s'il vous plait
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
6 déc. 2008 à 21:46
Voici :

Sub chargerListe
   Dim rst As RecordSet
   Dim dbs As Database
   Dim sqlRq As String
   Dim liste As String
' création de la requête   sqlRq "Select Revue From abonnement where ID ""IDsaisie"""
' création d'un objet Database faisant référence à la bdd du project actuel (le mdb)
   Set dbs = CurrentDb
' création d'un objet Recordset contenant les enregistrements résultant de la requête
   Set rst = dbs.OpenRecordset(sqlRq)
' balayage des enregistrements, récupération du champ Revue, création d'un string contenant la liste des revues
' séparées par des points-virgule
   With rst
      Do Until .EOF
           liste = liste & ";" & !Revue
           .MoveNext
      Loop
' libération des ressources de la DAO
      .Close
   End With
   dbs.Close
' mise a jour de la source de données de la zone de liste 
   maListe.RowSource = Mid(liste, 2)
' réactualisation des données du formulaire afin que la zone de liste prenne en compte la source de données
   Me.Requery
End Sub
0
petitcatenaire Messages postés 17 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 9 février 2009
6 déc. 2008 à 22:00
Je suis vraiment desole mais j'ai vraiment trop de mal avec toutes ces fonctions et le but est que je dois coder et bien expliquer clairement comment je fais et pouvoir le refaire cela m'embete de devoir abandonner l'idée d'utiliser ton code qui a l'air de bien fonctionner mais je coince a pratiquement toutes les lignes comme la fonction with ainsi que le rst ou EOF . . . Desole mais merci beaucoup d'avoir voulu m'aider mais je suis definitivement trop mauvais en VBA javascript:Insert_Emoticon :( . . .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
6 déc. 2008 à 23:51
Sois cool, ça ne me dérange pas plus que ça d'aider un débutant.

Pour le With, oublie-le et remplace le bloc de code :

 With rst
      Do Until .EOF
           liste = liste & ";" & !Revue
           .MoveNext
      Loop
' libération des ressources de la DAO
      .Close
   End With

par :

      Do Until rst.EOF
           liste = liste & ";" & rst!Revue
           rst.MoveNext
      Loop
' libération des ressources de la DAO
      rst.Close

Ces deux blocs de code sont rigoureusement identiques. Le With nomObjet te dispense simplement d'écrire nomObjet devant chaque propriété ou méthode (nomObjet.EOF, nomObjet!Revue, nomObjet.MoveNext, nomObjet.Close).
Le rst, c'est simplement le résultat de ta requête, qui s'est exécutée automatiquement lors de l'instruction Set rst dbs.OpenRecordset(sqlRq). C'est donc une liste d'enregistrements extraite de ta table abonnement. Si tu as, dans ta table, deux enregistrements dont le champ ID contient "IDsaisie", alors rst contient ces deux enregistrements. Mais j'ai fortement l'impression que IDsaisie est le nom d'une variable ou d'un Textbox. Si c'est le cas, ta requête doit être corrigée ainsi : sqlRq "Select Revue From abonnement where ID = """ & IDsaisie & """"


Quand à rst.EOF (abrégée en .EOF par la clause With), cette propriété devient vraie lorsque tous les enregistrements du rst ont été lus au moyen de l'instruction rst.MoveNext et permet donc de sortir de la boucle de lecture.


Si ces explications ne te permettent pas d'avancer, ça ne me pose pas de problème si tu m'envoies ton mdb à l'adresse [mailto:pboudouard@hotmail.com pboudouard@hotmail.com]. Je l'adapterai et te le renverrai.

Amicalement
0
Rejoignez-nous