参数太少的 OpenRecordset 方法问题

OpenRecordset Method Issue With Too few Parameters

这个看似简单的问题,让我停了三天。

我的代码:

Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("qryAutoOrder", dbOpenDynaset)

qryAutoOrder 是一个 select 查询,它 运行 本身就很好并且没有参数(除非查询构建器中的条件计数)。

当代码 运行s 它挂在 set rs = 行并抛出此错误。

Run-time error '3061': Too few parameters. Expected 1.

代码中还有更多内容,我希望它 运行 为查询结果中的每条记录创建一个循环,以便我可以将数据附加到另一个现有的数据库表中,但它目前已被注释掉。

OpenRecordset 不解析查询中的表单引用 ([Forms]![completeRepair]![txtRepairID])。在那种情况下,它被解释为您尚未为其提供值的参数。

所以通过Eval(prm.Name)给它参数值...

Dim rs As DAO.Recordset
Dim db As DAO.database
Dim prm As DAO.Parameter
Dim qdf As DAO.QueryDef

'Set rs = CurrentDb.OpenRecordset("qryAutoOrder", dbOpenDynaset)
Set db = CurrentDb
Set qdf = db.QueryDefs("qryAutoOrder")
For Each prm In qdf.Parameters
    prm.value = Eval(prm.Name)
Next
Set rs = qdf.OpenRecordset(dbOpenDynaset)

你实际上不需要 For 循环;这就是我习惯设置这些的方式。但是你可以只给它一个参数值而不是...

qdf.Parameters(0).Value = [Forms]![completeRepair]![txtRepairID]