【问题标题】:VBA Record reading limitation?VBA 记录读取限制?
【发布时间】:2019-11-05 04:25:26
【问题描述】:

我正在使用 Excel 2016 VBA 通过 DAO 引用读取 Access 2016 数据库。我这样做是因为在 Excel 中创建动态表单控件要容易得多。它似乎工作正常,但我发现它只读取任何表的前 335 条记录,即使我使用 SQL 查询限制了三个记录集。

我从以下内容开始阅读房间中的一张架子表:

DIM db as DAO.Database

DIM rsRacks as DAO.Recordset

DIM strSQL as String

‘Initialization code deleted

StrSQL = “SELECT * FROM tblRacks WHERE RoomID = “ & str(RoomID) & _
  “ ORDER BY RackName”

Set rsRacks = db.openrecordset(strSQL) 

它没有读取我添加到表中的三个机架,因此我将代码更改为

Set rsRacks = db.openrecordset(“tblRacks”)

Debug.print rsracks.recordcount

报告的即时窗口

335

该表有超过一千条机架记录。有什么想法吗?

【问题讨论】:

  • 请用codeblocks格式化您的代码
  • RecordCount访问的记录数,不一定返回。你在迭代记录吗?
  • 感谢 Mathieu 的输入,但我发现了问题。我的代码中有一个来自以前版本的工件,它正在读取错误的数据库。

标签: excel vba dao


【解决方案1】:

尽管您评论了访问错误的数据库,但实际上新打开的记录集的RecordCount 可能是错误的。

它在DAO docs 中明确指出RecordCount 是“已访问”(实际上是已读取/缓冲的)行数。只有当您读取了整个记录集,即通过MoveNextMoveLast 方法时,您才能依赖RecordCount

通常,当从包含大约 100 条测试记录的开发数据库切换到更大的生产数据库时,这个问题会让您感到困扰。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2012-03-10
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多