使用QueryDefs返回Recordset时出错

时间:2012-06-19 15:52:15

标签: ms-access vba ms-access-2007 access-vba

我正在尝试使用VBA代码访问查询。我想我已经这样做了100次。我的代码(在命令按钮上)像这样开始:

Dim rstDocCount As Recordset

Set rstDocCount = CurrentDb.QueryDefs("DocCount").OpenRecordset

rst.MoveFirst

我收到此错误消息:

  

运行时错误'3061':参数太少。预计1。

Set rstDocCount行突出显示为黄色。

我做错了什么?唯一的参数应该是查询的名称,我清楚地知道了。

2 个答案:

答案 0 :(得分:6)

你需要:

Dim rstDocCount As Recordset
Dim qdf As QueryDef

    Set qdf = CurrentDb.QueryDefs("DocCount")

    qdf.Parameters("Forms!Boxing!BoxID") = Forms!Boxing!BoxID 
    Set rstDocCount = qdf.OpenRecordset

    rstDocCount.MoveFirst

答案 1 :(得分:1)

" 唯一的参数应该是查询的名称,我清楚地知道了。"

OpenRecordset方法接受3个参数:Type; Options;和LockEdit。但是,所有这3个参数都是可选的,因此" 参数太少"错误不是OpenRecordset参数。

相反,正如Remou指出的那样,您的QueryDef包含了数据库引擎无法在查询的源表中找到的内容(通常是字段表达式)。在这种情况下,它会将缺少的某事视为参数,并需要该参数的值。