DAO QueryDef 的 OpenRecordset 方法上的数据转换错误 3421

Posted

技术标签:

【中文标题】DAO QueryDef 的 OpenRecordset 方法上的数据转换错误 3421【英文标题】:Data Conversion error 3421 on OpenRecordset method of DAO QueryDef 【发布时间】:2013-06-21 11:46:28 【问题描述】:

我想将一个参数传递给 MS Access 2010 中保存的查询,然后还从查询中获取结果:它是我保存的查询:

SELECT Count(*)
FROM tb_KonzeptDaten
WHERE ( Konzept=[fzg_ID] and (DCMFile is null or (DCMFile='')));

这是我调用此查询的 VBA 代码:

Dim db As DAO.Database
Dim qry As DAO.QueryDef
Set qry = db.QueryDefs("Test_qr_emptyDCM")
qry.Parameters("fzg_ID").Value = ID
Set rs = qry.OpenRecordset("Test_qr_emptyDCM")

VBA 代码中 ID 的类型也是 Long,Konzept 的字段是 Database 是 Long integer 为什么我会收到此错误,我该如何解决?

【问题讨论】:

【参考方案1】:

您的问题在于qry.OpenRecordset 语句。 QueryDef.OpenRecordset 的第一个参数是 [Type](例如,dbOpenSnapshot)。您无需提供查询名称,因为您在创建 QueryDef 对象时已经提供了该名称。

尝试只使用

Set rs = qry.OpenRecordset

【讨论】:

以上是关于DAO QueryDef 的 OpenRecordset 方法上的数据转换错误 3421的主要内容,如果未能解决你的问题,请参考以下文章

将 DAO QueryDef 保存到临时查询并将结果输出到 Excel

DAO 是创建查询的途径吗

VBA - 使用 DAO 对象的运行时错误 3271

到 SQL Server 的 MS Access 通用直通查询

在 Access 中使用 ODBC 连接到 MS SQL Server 2012:手动调用查询和在 VBA 中调用查询之间的巨大时间差异

Android 5.1 Audio系统笔记:AudioRecord