Problème de requête mysql contenant un champ calculé avec group_concat
Bonjour,
je développe une macro VBA dans Excel 2010 avec une connexion ADODB sur mysql, jusque là pas de problème, j'ai une requête mysql qui fonctionne bien dans le Brownser Mysql dans le style :
Code:
1 2 3 4
| Select t1.semaine, t2.data, count(*) as nb, group_concat(t2.id) as nId
from table1 as t1 inner join table2 as t2 on t1.id2=t2.id
where t1.champn=45
group by t1.semaine,t1.data |
le résultat dans le brownser mysql est du type (n lignes, je ne donne un exemple que sur la première ligne en format csv) :
1;"texte";5;1023,1254,2546,3512,5232
voici mon vba :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Set conn = New ADODB.Connection
With conn
.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=x; DATABASE=base; USER='xxx'; PASSWORD='xxx'; Option=3;"
.Open
End With
Set rs1 = New ADODB.Recordset
ChaineSQL = "Select t1.semaine, t2.data, count(*) as nb, group_concat(t2.id) as nId from table1 as t1 inner join table2 as t2 on t1.id2=t2.id where t1.champn=45 group by t1.semaine,t1.data;"
With rs1
.CursorLocation = adUseClient
.Open ChaineSQL, conn, adOpenDynamic, adLockOptimistic
ligne = 3
If .EOF Then
MsgBox ("pas de ligne à afficher")
Else
Do
ligne = ligne + 1
Range("A" + Format(ligne, "0")).Value = .Fields(0).Value
Range("B" + Format(ligne, "0")).Value = .Fields(1).Value
Range("C" + Format(ligne, "0")).Value = .Fields(2).Value
Range("D" + Format(ligne, "0")).Value = .Fields(3).Value
.movenext
Loop Until rs1.EOF
End If
End With
rs1.Close
Set rs1 = Nothing |
lorsque j'exécute le code j'ai un message d'erreur sur la ligne contenant ".Fields(3).Value" : Erreur d'exécution '1004': Erreur définie pas l'application ou l'objet
si je fait "print rs1.Fields(3).Value" dans la fenêtre d'exécution j'ai en réponse : "?????????????????"
si je regarde en fenêtre espion "rs1.Fields(2).Value", j'ai bien 5 en value, mais pour "rs1.Fields(3).Value": je n'ai rien en value et si je développe le contenu de "rs1.Fields(3).Value" le type de value est adVarBinary en type et Datatypeenum en type et en développant Value je trouve 24 valeurs contenant chacune une nombre correspondant au code ascii de chaque caractère du résultat :
49 48 50 51 44 49 50 53 52 44 50 53 52 55 44 51 53 49 50 44 53 50 51 50 => chaque nombre dans value(0) à value(23) ...
J'ai essayé de faire un print de "rs1.Fields(3).Value(0)" j’ai un autre message d'erreur...
Donc ma question : est-ce que quelqu'un sait comment récupérer le résultat de group_concat en VBA pour le mettre dans une cellule excel ?
Merci d'avance
Alain