2017-08-09 52 views
0

我知道這是一個多餘的問題,但無法找到與我的類似的場景。訪問權限:「參數太少」。

我有一個存儲的查詢,它在執行時從打開的窗體上的過濾器中選擇值並顯示結果。所有作品。

下面是該查詢是如何調用:

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

我試圖使用從VBA相同的查詢,以創建可下載或通過電子郵件發送的Excel文件,我得到一個「太少參數」錯誤現在(當表單仍然打開時)。任何人都可以讓我朝着正確的方向發展,請問爲什麼會這樣?

+0

我可以理解你有一個問題,但我們不能沒有任何代碼幫助。 – Prisoner

+0

@Prisoner等我會更新它,謝謝 – Babar

回答

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

參見this question以獲取有關ADODB參數的信息。他們有點棘手。

執行查詢前需要填寫所有參數。

+0

有問題的cmd是ADODB.Command對象。使用哪種方法? – Babar

+0

還有一個問題,我直接在查詢中引用這些字段。所以我使用相同的命名約定創建參數?那就是「Forms!form1!textfield」 – Babar

+1

通常,你可以按順序添加參數,它會工作,但對於'ADODB',我不完全確定。我通常只需在查詢中使用'?'佔位符來查找參數。 –