【问题标题】:Zeros rows returned from ADO Recordset从 ADO 记录集返回的行归零
【发布时间】:2015-05-07 18:44:10
【问题描述】:

我正在尝试使用以下代码将数据从 SQL Server 表中获取到 ADO 记录集中。一切正常,没有错误,但我总是得到-1的记录数。我已经确认数据库名称和表是正确的。如果我使用 SSMS,我可以看到表中有数据。

我在这里错过了什么?

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rsCount As Integer

cn.ConnectionString = "Provider=SQLNCLI11;Server=Server1;DataBase=Database1;Trusted_Connection=yes;"
cn.Open

Call rs.Open("Select * from table1", cn, adOpenDynamic, adLockOptimistic)

rsCount = rs.RecordCount

【问题讨论】:

  • -1 作为返回值表示某些东西不起作用...
  • adOpenDynamic 替换为adOpenStatic,让我知道发生了什么。
  • 我从来没有以Call 开头——那可能是在扔东西。
  • @MaciejLos adOpenStatic 是赢家!!!非常感谢您的帮助!!
  • @jradich1234,我很高兴能帮上忙。请接受我的回答作为解决方案;)

标签: sql-server vba excel ado recordset


【解决方案1】:

正如我在对该问题的评论中提到的,将adOpenDynamic 替换为adOpenStatic,您应该会获得正确的记录数。

使用 ADO 记录集的 .RecordCount 属性需要 用途:

1. Static or Keyset server-side cursors or
2. A client-side cursor (which returns a Static cursor)

RecordCount 属性将为只进游标返回 -1;这 静态或键集游标的实际计数;和-1 或 动态游标的实际计数,取决于数据源。

更多详情herehere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    相关资源
    最近更新 更多