Next Recordset

Résolu
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 - 5 juil. 2007 à 10:44
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 - 5 juil. 2007 à 11:20
Bonjour,

j'ai un problème de gestion d'une procédure stockée qui me ramène plusieurs résultats.

Exemple : rst = "select * from table1 ; select * from table2"

ma boucle me permet de récupérer tous les enregistrements des deux résultats mais le problème
est lorsque le nombre de champs retournés n'est pas identique dans les deux résultats.
exemple : rst="select nom, prenom from table1 ; select nom from table2"
dans cet exemple, la boucle va me récupérer tous les enregistrements du premier résultats.
par contre pour le second résultat, j'ai une erreur lorsque je récupére le second champ qui est ... inexistant !!!

comment détecter l'inexistance de ce champ et continuer le traitement ?

Merci d'avance pour votre aide,

ps : j'espere avoir été assez clair...

   Do Until Rst.State = 0
      While Not Rst.EOF
            msgbox Rst.Fields(0)
            msgbox Rst.Fields(1)
            Rst.MoveNext
      Wend
      Set Rst = Rst.NextRecordset
   Loop

5 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
5 juil. 2007 à 10:54
Bonjour,

Tu peux récupérer le nombre de champs de ta table avec Rst.fields.count
Je pense que ça pourrait t'aider..
3
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
5 juil. 2007 à 10:56
c'est clair !!!

merci beaucoup lolokun !!! je vais modifier l'algo !!!
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 juil. 2007 à 10:59
Oh......Cela me rend fou ces commentaires qui ne s'affichent pas....Doit tout retaper...

Ou alors en séléctionnant TOUT tes champs(un peu long j'en convient) :

rst="select * from table1 ; select * from table2"

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
5 juil. 2007 à 11:10
De toute façon, je ne pense pas que ce soit vraiment optimal, et surtout, niveau programmation derrière, vraiment intuitif de faire 2 select dans le même recordset !

Pourquoi n'ouvre-tu pas deux recordset pour tes deux tables plutôt ?
0

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

Posez votre question
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
5 juil. 2007 à 11:20
darksidious : ce sont des procédures stockées existantes qui tournent sur une appli ObjectView !
                     pour la réécriture de l'appli en vb, je n'ai pas envie de modifier les proc stocks :-)

en tout cas, le count fonctionne SUPER !!!
merci beaucoup !!!

            Ligne = 0
            Colonne = 0
   
            Do Until Rst.State = 0
                While Not Rst.EOF
                    Ligne = Ligne + 1
                    Colonne = 0
                    Do Until Colonne = Rst.Fields.Count
                        FlexGrid.textmatrix(Ligne, Colonne) = Rst.Fields(Colonne)
                        Colonne = Colonne + 1
                    Loop
                    Rst.MoveNext
                Wend
                Set Rst = Rst.NextRecordset
            Loop
0
Rejoignez-nous