访问权限:“参数太少”。

问题描述:

我知道这是一个多余的问题,但无法找到与我的类似的场景。访问权限:“参数太少”。

我有一个存储的查询,它在执行时从打开的窗体上的过滤器中选择值并显示结果。所有作品。

下面是该查询是如何调用:

cmd.CommandType = adCmdStoredProc 
cmd.CommandText = "qry" 
Dim rsReport As New ADODB.Recordset 
rsReport.CursorType = adOpenKeyset 
rsReport.CursorLocation = adUseClient 
rsReport.Open cmd 

我试图使用从VBA相同的查询,以创建可下载或通过电子邮件发送的Excel文件,我得到一个“太少参数”错误现在(当表单仍然打开时)。任何人都可以让我朝着正确的方向发展,请问为什么会这样?

+0

我可以理解你有一个问题,但我们不能没有任何代码帮助。 – *er

+0

@*er等我会更新它,谢谢 – Babar

使用VBA执行查询时,不能引用打开的表单。您需要明确说明所有参数。

如果您使用DoCmd.RunQuery执行查询,则可以使用DoCmd.SetParameter来设置参数。

如果您使用QueryDef.Execute执行查询,则可以使用QueryDef.Parameters集合来设置参数。

如果您使用的是ADODB.Command执行查询,您可以通过附加参数为Command.Parameters集合,以下列方式设置参数:

Command.Parameters.Append Command.CreateParameter ("MyParameterName", adInteger, adParamInput)其中adInteger是类型。之后,您仍然需要通过设置参数Command.Parameters("MyParameterName").Value = MyValue

参见this question以获取有关ADODB参数的信息。他们有点棘手。

执行查询前需要填写所有参数。

+0

有问题的cmd是ADODB.Command对象。使用哪种方法? – Babar

+0

还有一个问题,我直接在查询中引用这些字段。所以我使用相同的命名约定创建参数?那就是“Forms!form1!textfield” – Babar

+1

通常,你可以按顺序添加参数,它会工作,但对于'ADODB',我不完全确定。我通常只需在查询中使用'?'占位符来查找参数。 –