4

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

Dim rstDocCount As Recordset

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

rst.MoveFirst

我收到此错误消息:

运行时错误“3061”:参数太少。预期 1。

Set rstDocCount行以黄色突出显示。

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

4

2 回答 2

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
于 2012-06-19T17:25:58.693 回答
1

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

OpenRecordset方法接受 3 个参数:Type; Options; 和LockEdit。但是,所有 3 个参数都是可选的,因此“参数太少”错误与OpenRecordset参数无关。

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

于 2012-06-19T16:40:10.477 回答