参数太少的 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]
这个看似简单的问题,让我停了三天。
我的代码:
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]