参数太少。 (1) 预期

Too few parameters. (1) expected

我正在使用 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

我试过在存储的查询中使用和不使用 "Parameters..." 行。两种方式都出现相同的错误。 存储的查询本身运行良好,只是从 VBA 调用时不行。

使用 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 来自哪里,但假设它对参数值有效。