You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access VBA中db.OpenRecordset执行时出现类型不匹配错误求助

MS Access VBA中db.OpenRecordset()返回「类型不匹配」的原因及修复方案

问题场景

执行以下VBA代码时,Set rst = db.OpenRecordset("tblUsageLog")语句触发「类型不匹配」错误,且已确认表名正确、新建表后问题仍存在:

Dim db As Database
Dim rst As Recordset

On Error GoTo ErrHandler
Set db = CurrentDb

Set rst = db.OpenRecordset("tblUsageLog")

核心原因

Access VBA同时支持DAO(Data Access Objects)和ADO(ActiveX Data Objects)两种数据访问模型。若VBA项目未明确引用DAO库,代码中Database和Recordset的默认类型会被解析为ADO对象,而CurrentDb()返回的是DAO类型数据库对象,两者类型不兼容,从而触发错误。

修复方案

方案1:显式引用DAO库

  1. 打开VBA编辑器(按下Alt+F11)
  2. 点击顶部菜单栏「工具」→「引用」
  3. 在引用列表中找到并勾选Microsoft DAO x.x Object Library(x.x为具体版本号,如3.6、12.0等,优先选择高版本)
  4. 点击「确定」保存设置,重新运行代码

方案2:显式声明DAO类型(无需修改引用)

若不想调整引用设置,可在变量声明时明确指定DAO前缀,强制使用DAO对象模型:

Dim db As DAO.Database
Dim rst As DAO.Recordset

On Error GoTo ErrHandler
Set db = CurrentDb

Set rst = db.OpenRecordset("tblUsageLog")

内容的提问来源于stack exchange,提问作者Dishan G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:22:03