2013-05-14 53 views
1

希望有人能幫我解決我面臨的問題。問題是我很難在同一個Excel工作表中獲取多個SQL查詢輸出。多個SQL查詢輸出在一個工作表中

通過下面的代碼,我可以得到一個/單個SELECT查詢輸出與列標題的輸出。現在我想在同一個工作表中顯示多個SELECT查詢輸出。

代碼---

Sub databases() 

Dim rs As ADODB.Recordset 
Dim cn As ADODB.Connection 
Dim sSQL1 As String 


sSQL1 = "SELECT SUM(number_submitted)as NUMBER_SUBMITTED," & _ 
"MGR_GRP_ID,SERVICE_CI_ID,LOCATION_ID from CHANGE_REQUEST_ENUM_F where    ENUM_FIELD_CD=11834 and ENUM_VALUE in (10,11)" & _ 
"group by MGR_GRP_ID,SERVICE_CI_ID,LOCATION_ID" 

'sSQL2 = "select * from change_request_f" 

Set cn = New ADODB.Connection 

Sheets("sheet4").Select 
Selection.ClearContents 

cn.Open "Provider=SQLOLEDB.1; UID=USERID;PWD=PASSWORD;Initial catalog=BMCDI_DWH;Data    Source=vw-pun-atm-qa26" 

Set rs = New ADODB.Recordset 

rs.CursorLocation = adUseClient 
rs.Open sSQL1, cn, adOpenForwardOnly, adLockReadOnly, adCmdText 
'check content of rs 
If rs.EOF Then 
MsgBox ("record set is empty. rs.EOF = " & rs.EOF) 
Else 
MsgBox ("total records: " & rs.RecordCount) 
Range("A1").Select 
For Each qf In rs.Fields 
Range("a1").Offset(0, coloffset).Value = qf.Name 
'Range("a1").Offset(1, 0).Value = qf.Name 
coloffset = coloffset + 1 
Next qf 
Range("A2").CopyFromRecordset rs 
rs.Close 
Set rs = Nothing 
End If 
End Sub 
+0

[我已經回答了一個非常類似的問題,請點擊此處(http://stackoverflow.com/questions/16436006/excel-and-sql-queries-through-不同-潛艇 - 或功能/ 16436388#16436388) – 2013-05-14 12:38:04

回答

0

我就拆了這一點到另一個子。

Sub writeRs(rs as ADODB.Recordset, startRange as Range) 
'All your code here to place the recordset 
'The only change would be for the use of startRange 
'This you would pass the upper left cell that you want the recordset to be written to. 

End Sub 

然後,您可以使用兩個記錄集對象。 rs1rs2並致電子

rs1.Open sql1, cn... 
rs2.Open sql2, cn... 

''Check for empties 

writeRs rs1, Range("A1") 
writeRs rs2, Range("A10")