J'utilise la requête SQL ci-dessous qui retient plusieurs lignes et colonnes dans le résultat, quand j'essaye de passer ceux dans Excel je ne suis pas capable de le faire
Code:
Set com = QCConnection.Command com.CommandText = "select RN_TESTER_NAME as 'Tester, sum(case when RN_STATUS='Passed' then cnt else 0 end), sum(case when RN_STATUS='Failed' then cnt else 0 end)from (select count(*) cnt, RN_STATUS,RN_TESTER_NAME from RUN Where RN_Execution_Date = '5/17/2017'group by RN_STATUS,RN_TESTER_NAME) as RUN group by RN_TESTER_NAME order by RN_TESTER_NAME" Set RecSet = com.Execute For Col = 0 To RecSet.ColCount - 1 Sheet4.Cells(Col + 1, 7) = RecSet.FieldValue(Col) Debug.Print Sheet4.Cells(Col + 1, 7) Next
Je reçois le résultat en tant que ci-dessous User1
2
3
Je veux le résultat de cette manière (notez svp ceci est la manière dont qc me montre le résultat
Utilisateur1 2 3 (2 et 3 sont les valeurs)
Utilisateur2 1 0
Utilisateur3 6 3
Aussi essayé d'utiliser, mais pas d'aide
For Col = 0 To RecSet.ColCount - 1 Sheet4.Cells(Col + 1, 7) = RecSet.FieldValue(Col) Sheet4.Cells(Col + 1, 7) = RecSet.FieldValue(Col+1) Next
EDIT: S'il vous plaît noter que je ne suis pas en mesure d'get datatables User2 et User3 dans cette requête, mais lorsqu'il est testé en QC, il montre datatables et il y a datatables présentes. Merci
N'essayez pas de créer vous-même votre table de résultats dans VBA
, utilisez simplement la fonctionnalité embeddede déjà présente dans Excel. Cliquez sur l'onglet Data
sur le ruban, puis sur From Other Sources
, puis sur From SQL Server
:
Suivez les étapes de l'assistant qui s'affiche et vous aurez vos données. Si vous souhaitez utiliser une requête spécifique, select une petite table dans l'assistant, puis modifiez les propriétés de connection de la table de données via la window Importer des données qui apparaît à la fin de l'assistant:
Changez le Command Type
en SQL
, puis entrez votre script dans le Command Text
:
Et vous avez votre table!
Si vous souhaitez pouvoir modifier les colonnes ou datatables renvoyées, vous pouvez modifier le Command Text
aide de VBA
et baser les différents éléments du script SQL sur les valeurs conservées dans votre feuille de calcul.
J'ai eu la solution, j'utilisais une mauvaise boucle.
Set com = QCConnection.Command com.CommandText = "select RN_TESTER_NAME as 'Tester', sum(case when RN_STATUS='Passed' then cnt else 0 end), sum(case when RN_STATUS='Failed' then cnt else 0 end)from (select count(*) cnt, RN_STATUS,RN_TESTER_NAME from RUN Where RN_Execution_Date = '5/17/2017'group by RN_STATUS,RN_TESTER_NAME) as RUN group by RN_TESTER_NAME order by RN_TESTER_NAME" Debug.Print com.CommandText Set RecSet = com.Execute x = 1 Do Until RecSet.EOR Sheet4.Cells(x, 7) = RecSet.FieldValue(Col) Sheet4.Cells(x, 8) = RecSet.FieldValue(Col + 1) Sheet4.Cells(x, 9) = RecSet.FieldValue(Col + 2) RecSet.Next x = x + 1 Loop