访问:"参数太少。"

时间:2017-08-09 09:40:58

标签: sql ms-access access-vba

我知道这是一个多余的问题,但找不到类似的情况。

我有一个存储的查询,在执行时,从打开的表单上的过滤器中选择值并显示结果。一切正常。

以下是调用查询的方式:

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

我正在尝试使用VBA中的相同查询来创建可以下载或通过电子邮件发送的Excel文件,并且我得到了一个"太少的参数"现在出错(表单仍然打开)。任何人都可以让我朝着正确的方向指出为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

使用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

将参数设置为值

有关ADODB参数的信息,另请参阅this question。它们有点棘手。

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