Menu

Résultats de requête Sql en Vba [Résolu]

Messages postés
58
Date d'inscription
mercredi 4 mai 2016
Dernière intervention
5 février 2019
- - Dernière réponse : 1Globule
Messages postés
58
Date d'inscription
mercredi 4 mai 2016
Dernière intervention
5 février 2019
- 5 févr. 2019 à 12:33
Bonjour,

J'ai créé un requête Sql dans mon Vba, et j'affiche ensuite le résultat dans un msgbox.
Aucun problème quand il y a une seule ligne de résultat, mais comment faire pour afficher toutes les lignes quand il y en a plusieurs ?

Le code sera plus parlant :

Dim Requete As String
Requete = ""
ORACLE_CONNECTION = "XXX"
ORACLE_INSTANCE = "XXX"
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.dbOpenDatabase(ORACLE_INSTANCE, ORACLE_CONNECTION, 0&)

Requete = "Select c.dat, sum(c.mt) From client c " 

Set OraDynaset = OraDatabase.dbcreatedynaset(Requete, 0&)
    dat = OraDynaset.Fields(0).Value
    mt = Format(Replace(OraDynaset.Fields(1).Value, ".", ","), "0,00.00")

MsgBox dat & " : " & mt


Merci beaucoup pour votre aide !
Afficher la suite 

Votre réponse

5 réponses

Messages postés
5818
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 février 2019
404
0
Merci
Bonjour,

en adaptant ceci à ton cas:

Dim i As Integer
Dim message As String
For i = 1 To 5
message = message & i & vbLf 'retour à la ligne
Next
MsgBox message


Commenter la réponse de cs_Le Pivert
Messages postés
58
Date d'inscription
mercredi 4 mai 2016
Dernière intervention
5 février 2019
0
Merci
Merci bien, c'est une partie de la solution.

Le problème maintenant, c'est que mes variables "dat" et "mt" correspondent à la première ligne de résultat.
S'il y a deux lignes, "dat" doit avoir deux valeurs et "mt" aussi.

Et je n'arrive pas à afficher les deux valeurs...
cs_Le Pivert
Messages postés
5818
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 février 2019
404 -
As-tu essayé ceci?

message = message & dat & " : " & mt & vbLf 'retour à la ligne


Et je n'arrive pas à afficher les deux valeurs...

je ne vois pas de boucle dans ce code!

  dat = OraDynaset.Fields(0).Value


pour avoir la 2ème valeur il faut faire:

  dat = OraDynaset.Fields(1).Value
Commenter la réponse de 1Globule
Messages postés
58
Date d'inscription
mercredi 4 mai 2016
Dernière intervention
5 février 2019
0
Merci
oui, j'obtiens un msgbox avec ceci :
18/01/2019 : 500

C'est déjà super, mais il n'y a pas la deuxième ligne de résultat (qui devrait être : 14/01/2019 : 100).

D'un côté c'est plutôt logique, il me semble que les variables n'ont qu'une valeur dans mon code :
dat = OraDynaset.Fields(0).Value
mt = Format(Replace(OraDynaset.Fields(1).Value, ".", ","), "0,00.00")

Comment leur donner la deuxième valeur aussi, s'il y a deux lignes ? ou les trois valeurs s'il y a trois lignes etc ?
cs_Le Pivert
Messages postés
5818
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 février 2019
404 -
Il te faut faire une boucle voir ceci:

http://xlr8.free.fr/?p=396

@+ Le Pivert
Commenter la réponse de 1Globule
Messages postés
58
Date d'inscription
mercredi 4 mai 2016
Dernière intervention
5 février 2019
0
Merci
Je touche au but ! Mais mes variables sont écrasées à chaque passage, dans la boucle.
Dans le lien il les affiche dans des cellules, ce qui paraît plus simple.

En debug :

For x = 0 To oraDynaSet.RecordCount - 1
dat = oraDynaSet.Fields(0).Value ' Au premier passage : "18/01/2019", au deuxième : "14/01/2019"
mt = oraDynaSet.Fields(1).Value ' Au premier passage : "500", au deuxième : "100"
oraDynaSet.MoveNext
Next

Et mon msgbox n'affiche que la dernière valeur de chaque variable...
cs_Le Pivert
Messages postés
5818
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 février 2019
404 -
C'est mieux de faire comme l'exemple
mais essaie ceci:
For x = 0 To oraDynaSet.RecordCount - 1 
dat = oraDynaSet.Fields(0).Value  
mt = oraDynaSet.Fields(1).Value 
message = message & dat & " : " & mt & vbLf 'retour à la ligne
oraDynaSet.MoveNext 
Next
MsgBox message 
Commenter la réponse de 1Globule
Messages postés
58
Date d'inscription
mercredi 4 mai 2016
Dernière intervention
5 février 2019
0
Merci
Le Pivert : UN ENORME MERCI !!!
Commenter la réponse de 1Globule