【问题标题】:How to return multiple recordsets in a single execution using ADODB?如何使用 ADODB 在一次执行中返回多个记录集?
【发布时间】:2019-08-05 23:18:28
【问题描述】:

我需要遍历单个查询产生的多个记录集。

但是我当前的连接似乎不支持这样做。因此,当我执行 .NextRecordset 时,我会收到消息:

当前提供程序不支持从一个 单次执行

这是我的连接字符串:

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

我必须做什么才能使用 .NextRecordset?

【问题讨论】:

  • 我从未见过支持多个记录集的提供程序。
  • 那很奇怪,我的意思是 NextRecordset 方法是干什么用的呢?
  • 我想如果提供者有兴趣提供能够返回多个结果集的能力,MS 添加了它。以我的经验,ADODB 提供商从来没有普遍支持它。就像启动另一个查询一样快......通常,第二个查询与第一个查询的结果不同。
  • 您的查询是什么样的?有没有像Select 1 from Table1; Select 2 from Table2这样的单独语句?

标签: sql vba adodb


【解决方案1】:

将 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多