【问题标题】:Recordset count always returns -1记录集计数始终返回 -1
【发布时间】:2015-05-21 11:42:33
【问题描述】:

我的代码是这样的

rst.CursorLocation = adUseClient
Set rst = MySQLConn.Execute("SELECT * FROM " & viewName & ";")
MsgBox rst.RecordCount

我想知道我的记录集中的记录数,但记录数总是返回 -1。我将如何解决这个问题?

【问题讨论】:

  • RecordCount 仅适用于 FetchAll 属性设置为 true 时检索到的 MySqlDataReader。
  • 我的 cmets 实际上并不准确,因为它是针对 Mysql 的。检查 bwest 的答案以使用静态光标。

标签: vba excel adodb recordset


【解决方案1】:

您需要使用静态游标。为此,您需要显式创建 RecordSet 对象,如下所示:

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.CursorLocation = adUseClient
objRS.Open "SELECT * FROM " & viewName & ";", objConn, adOpenStatic,adLockReadOnly, adCmdText

隐式创建的 RecordSet 具有服务器端游标,这会导致返回 -1。

欲了解更多信息:http://www.adopenstatic.com/faq/recordcounterror.asp

【讨论】:

  • 嗨,Set rst = New ADODB.Recordset rst.CursorLocation = adUseClient rst.Open "SELECT * FROM " & view, MySQLconnection, adOpenStatic, adLockReadOnly 但是记录数仍然是-1
  • 嗨,bwest,我可以做这个吗? Set rst = CreateObject("ADODB.Recordset") rst.CursorLocation = adUseClient rst.CursorType = adOpenStatic rst.LockType = adLockReadOnly Set rst = MySQLConn.Execute("SELECT * FROM " & viewName & ";")
  • 好答案。正确而简洁。非常适合查找语法问题。虽然它很老了。
猜你喜欢
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
相关资源
最近更新 更多