我正在使用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调用时.
最佳答案 使用DAO.QueryDef对象,提供参数值,然后执行QueryDef
Dim qdf As DAO.QueryDef
Set qdf = db.QueryDefs(!QueryName)
qdf.Parameters("Parm1").Value = intVdrProfileID
qdf.Execute dbFailOnError
参数(“Parm1”)表示名为Parm1的参数.如果没有引号,参数(Parm1),Access会将Parm1解释为变量.如果你没有这样的变量,那就会引发错误.
也可以通过数字而不是名称来识别参数.编号从零开始,因此参数(0)表示第一个参数.
注意我假设!QueryName是一个记录集值,是保存查询的名称.我不知道intVdrProfileID来自哪里,但假设它对参数值有效.