参数太少。(1) 预期

Tho*_*ber 5 sql parameters ms-access vba

我正在使用 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)));
Run Code Online (Sandbox Code Playgroud)

这是调用查询的 VBA:

Dim Parm1 As Long
db.QueryDefs(!QueryName).Parameters(Parm1) = intVdrProfileID
db.Execute !QueryName, dbFailOnError
Run Code Online (Sandbox Code Playgroud)

我已经尝试过在存储查询中使用和不使用“参数...”行。两种方式相同的错误。存储的查询本身可以正常工作,只是在从 VBA 调用时不行。

Han*_*sUp 2

使用DAO.QueryDef对象,提供参数值,然后执行QueryDef

Dim qdf As DAO.QueryDef
Set qdf = db.QueryDefs(!QueryName)
qdf.Parameters("Parm1").Value = intVdrProfileID
qdf.Execute dbFailOnError
Run Code Online (Sandbox Code Playgroud)

Parameters("Parm1")表示名为Parm1的参数。如果没有引号,Parameters(Parm1)Access 会将Parm1解释为变量。如果没有这样的变量,就会抛出错误。

还可以通过数字而不是名称来标识参数。编号从零开始,因此Parameters(0)表示第一个参数。

注意我假设!QueryName是记录集值并且是已保存查询的名称。我不知道intVdrProfileID来自哪里,但假设它对参数值有效。