2017-05-23 15 views
1
私は複数の行と結果でcoloumnsをreturingされ、以下のSQLクエリを使用しています

にSQLクエリの結果を挿入し、私はExcelでそれらを渡すためにしようとしているとき、私はそれを行うことができないのですはエクセル

コード:

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 

私はTHIで結果が欲しい

User1の
以下 として結果を取得していますsの方法(これはQCが
ユーザー1 2 3(2及び3の値である私の結果を示しているようであることに注意してください)
ユーザ2 1 0
ユーザ3 6 3

は、使用しようとしたが、無

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を助ける:私はそのクエリにユーザー2とユーザー3のデータを取得することはできないけど、QCで試験したとき、それは私のデータを示しているとのデータが存在しますのでご注意ください。ありがとう

+0

結果テーブルを手動で作成しようとしていますか? *** SQL Serverからデータを取得***ウィザードを使用するだけで、すべての処理が自動的に処理されます。 – iamdave

+0

こんにちは@iamdave、はい私たちはカスタマイズされたテーブル構造を持っていますので、データを取得できません。ユーザーはA1で呼び出され、結果はE1とG1で呼び出されます。 –

+1

これはどんなヘルプですか?https://msdn.microsoft.com/de-de/library/office/ff839240.aspx – Storax

答えて

2

結果テーブルを自分でVBAに作成しないでください。既にExcel内にある組み込み機能を使用してください。その後、From Other Sourcesその後、From SQL Server、リボン上Data]タブをクリックします。

がポップアップし、あなたのデータを持つことになり、ウィザードの手順に従います。あなたが特定のクエリを使用したい場合は、単にウィザードの小さなテーブルを選択して、ウィザードの終了時にポップアップするデータのインポートウィンドウを経由してデータテーブルの接続プロパティを変更します。

SQLCommand Typeを変更し、 Command Textにあなたのスクリプトを入力

そして、あなたはあなたのテーブルを持っています!


あなたが返される列またはデータを変更することができるようにしたい場合は、あなたがVBAを使用してCommand Textを変更し、ワークシート内に保持された値にSQLスクリプトのさまざまな要素をベースにすることができます。

+0

これはHP ALMデータベースなので、これはうまくいかない:( –

+0

@nishitdeyなぜこの質問は 'SQL-Server'タグが付けられているのですか?それにかかわらず、ODBC経由でデータベースに接続できれば、これはうまくいくでしょう'From SQL Server 'の代わりに' From Other Sources'ボタンの 'From Microsoft Query'オプションを選択してください。それでもうまくいかなくても、質問の中の接続をデータテーブルに添付してください。 - >リボンの 'Table')をワークシートに追加します。 – iamdave

0

解決方法が見つかりました。私は間違ったループを使用していました。

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