这个看似简单的问题让我在我的轨道上停了三天了。
我的代码:
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("qryAutoOrder", dbOpenDynaset)
qryAutoOrder是一个选择查询,它可以自行运行并且没有参数(除非查询构建器中的条件计数)。
当代码运行时,它挂在set rs =
行并抛出此错误。
运行时错误'3061':参数太少。预计1。
我希望代码中有更多内容为查询结果中的每条记录运行一个循环,以便我可以将数据附加到另一个现有的数据库表中,但它当前已被注释掉。
答案 0 :(得分:2)
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]