2016-01-07 62 views
1

我需要遍歷單個查詢生成的多個recodset。如何使用ADODB在一次執行中返回多個記錄集?

但是我目前的連接似乎不支持這樣做。所以,當我做.NextRecordset我得到的消息:

當前提供程序不支持從單一 執行

返回多個記錄這是我的連接字符串:

DB_CONNECTION = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Forecasting;Integrated Security=SSPI;" 
Call Conn.Open(DB_CONNECTION) 

什麼我必須這樣做才能夠使用.NextRecordset?

+0

我從來沒有見過支持多個記錄集的提供者。 –

+0

這很奇怪,我的意思是什麼是NextRecordset方法使用? – lisovaccaro

+0

我想,如果提供者有興趣提供能夠返回多個結果集的能力,MS就會添加它。根據我的經驗,這不僅僅是ADODB提供商普遍支持的東西。就像發射另一個查詢一樣快...經常,第二個查詢不同於第一個查詢的結果。 –

回答

0

你爲什麼不只是定義要像多個記錄:

Dim rs1 As String 
Dim rs2 As String 

等。然後,您可以每次使用另一個記錄集運行該查詢。

也許還可能有如下優點:

Dim Recordset As String 
Recordset = Array("Select * From *", "Select * From * where....", (aso)) 
For i = LBound(Recordset) - UBound(Recordset) 'not sure if it's the other way around 
    db.Recordset = Recordset(i) 
Next i 

我不知道,但也許我的語法是有點偏離......

0

設置將CursorLocation到adUseServer(而不是「客戶端邊')

Set RS = New ADODB.Recordset 
strSQL = "Select * from States; Select * from Countries;" 

With RS 
    .CursorLocation = adUseServer 
    .ActiveConnection = DB_CONNECTION 
    .CursorType = adOpenStatic 
    .Open strSQL 
End With 

Do 
    If Not RS.EOF Then 
     'do something 
    End If 
    Set RS = RS.NextRecordset 
    If RS Is Nothing Then 
     Exit Do 
    End If 
Loop Until RS.State = adStateClosed