Affichage listbox d'une requete SQL [Résolu]

Signaler
Messages postés
69
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
15 septembre 2005
-
liliesma
Messages postés
69
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
15 septembre 2005
-
J'ai déjà posté ce matin, Tof008 m'a répondu, mais il ne peut pas m'aider... donc je refait ma demande d'aide...

Et oui, c'est encore moi .. :-s
projet développé en VB6 sur une BD Access.
voila, une requête, qui fonctionne sous access, mais je ne sais pas si elle fonctionne sous vb (je ne vois pas pourquoi ça ne marcherai pas...)
Donc, je m'explique, la première requête est censée me retourner tous les articles concernant la facture sélectionnée dans la combobox, la deuxième compte le nombre d'article par facture. Ces articles doivent être affiché dans différentes listbox, et c'est là qu'intervient mon problème. VB ne m'affiche aucun message lors du débogage, donc c'est que tout se passe bien, en revanche lors de l'affichage j'ai comme un problème.
exemple la facture 1 à 3 articles différents : lors de l'affichage, il m'affiche bien 3 lignes, mais ces 3 lignes sont identiques, elles correspondent au premier article.
Je crois que mon problème provient de l'affichage avec ma boucle For Next, mais je ne vois pas comment faire autrement.

'Requête SQL pour définir les champs à afficher
SQL = "Select CONTENIR.Art_Code, Art_Lib, Art_Prix, FAMILLE.Fam_Code, Fam_Lib, FACTURE.Fac_Num, Fac_Tab, Fac_Couv, CONTENIR.Qte "
SQL = SQL & "From FACTURE, CONTENIR, ARTICLE, FAMILLE " SQL SQL & "Where FACTURE.Fac_Num CONTENIR.Fac_Num " SQL SQL & "And CONTENIR.Art_Code ARTICLE.Art_Code " SQL SQL & "And ARTICLE.Fam_Code FAMILLE.Fam_Code " SQL SQL & "And FACTURE.Fac_Num" & "'" & cbNumFact.Text & "'"
'Compte le nombre d'articles par facture
SQLCompte = "Select Count(CONTENIR.Art_Code) "
SQLCompte = SQLCompte & "From CONTENIR " SQLCompte SQLCompte & "Where CONTENIR.Fac_Num" & "'" & cbNumFact.Text & "'"

'Affichage dans les listbox
For i = 1 To rs_NbArt.Fields(0)
lstCodArt.AddItem (rs_RechFact.Fields(0))
Next i

~*~ LîLï? ~*~

3 réponses

Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
7 juin 2009
3
Dans ta boucle, il manque :
rs_RechFact.MoveNext
qui sert à passer à l'enregistrement suivant dans le recordset

For i = 1 To rs_NbArt.Fields(0)
lstCodArt.AddItem (rs_RechFact.Fields(0))
rs_RechFact.MoveNext
Next i

Tu n'est pas obligé de faire 2 requetes (utile dans le cas où le temps d'exécution de la requete est très long): remplace ta boucle For par un While :

'Tant qu'on est pas à la fin du recordset, on avance et on ajoute à la liste
While Not rs_RechFact.EOF
lstCodArt.AddItem (rs_RechFact.Fields(0))
rs_RechFact.MoveNext
Wend
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
7 juin 2009
3
PS : Si à l'avenir tu utilises le While, n'oublie pas de mettre le MoveNext dans la boucle, sinon tu pars dans une boucle infinie.
Messages postés
69
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
15 septembre 2005

Alors là, je n'ai qu'une chose a te dire MERCI !!!!!!!!!!!!!!!

~*~ LîLï? ~*~