我知道这是一个多余的问题,但找不到类似的情况。
我有一个存储的查询,在执行时,从打开的表单上的过滤器中选择值并显示结果。一切正常。
以下是调用查询的方式:
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "qry"
Dim rsReport As New ADODB.Recordset
rsReport.CursorType = adOpenKeyset
rsReport.CursorLocation = adUseClient
rsReport.Open cmd
我正在尝试使用VBA中的相同查询来创建可以下载或通过电子邮件发送的Excel文件,并且我得到了一个"太少的参数"现在出错(表单仍然打开)。任何人都可以让我朝着正确的方向指出为什么会这样吗?
答案 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。它们有点棘手。
在执行查询之前,需要填写所有参数。