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

时间:2013-06-21 11:46:28

标签: vba ms-access ms-access-2010

我想在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的字段是数据库长整数 为什么我会收到此错误,如何解决?

1 个答案:

答案 0 :(得分:3)

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

尝试使用

Set rs = qry.OpenRecordset