我使用VBA将参数传递给存储的查询,但不断收到错误。这是存储的查询:
PARAMETERS Parm1 Long;
UPDATE tJ010_SRP4Codes INNER JOIN tZ100_VendorProfiles
ON tJ010_SRP4Codes.SRP4Code = tZ100_VendorProfiles.JdeSRP4Code
SET tJ010_SRP4Codes.Vendor = 'TEST'
WHERE ((([Parm1]=tZ100_VendorProfiles.VendorID)));
以下是调用查询的VBA:
Dim Parm1 As Long
db.QueryDefs(!QueryName).Parameters(Parm1) = intVdrProfileID
db.Execute !QueryName, dbFailOnError
我已尝试使用和不使用"参数......"存储的查询中的行。两种方式都有相同的错 存储的查询可以正常工作,而不是从VBA调用时。
答案 0 :(得分:2)
使用DAO.QueryDef
对象,提供参数值,然后执行QueryDef
Dim qdf As DAO.QueryDef
Set qdf = db.QueryDefs(!QueryName)
qdf.Parameters("Parm1").Value = intVdrProfileID
qdf.Execute dbFailOnError
Parameters("Parm1")
表示名为 Parm1 的参数。如果没有引号Parameters(Parm1)
,Access会将 Parm1 解释为变量。如果你没有这样的变量,那就会引发错误。
也可以通过数字而不是名称来识别参数。编号从零开始,因此Parameters(0)
表示第一个参数。
注意我假设!QueryName
是记录集值,并且是已保存查询的名称。我不知道 intVdrProfileID 的来源,但假设它对参数值有效。