从ADO Recordset返回的零行

时间:2015-05-07 18:44:11

标签: sql-server vba excel-vba ado recordset

我尝试使用以下代码将SQL Server表中的数据导入ADO Recordset。一切正常,没有错误,但我的记录总数为-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 个答案:

答案 0 :(得分:2)

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

  

使用ADO Recordset的.RecordCount属性也需要   使用:

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

对于仅向前游标,RecordCount属性将返回-1;该   静态或键集游标的实际计数;以及-1或者Button   动态游标的实际计数,具体取决于数据源。

更多详情herehere