你不提,其中/如何/何時該查詢保存在SQL服務器上。說明你有很大的查詢但離開這個查詢所在的地方是很大的細節。
但是,你問,你可以傳遞值到SQL服務器沒有任何代碼?答案是肯定的,但這意味着您最好的方法是創建+將大型查詢服務器端保存爲VIEW。你將不需要任何參數。
你再發動訪問的形式(或報告)時,只需連接一個where子句:
MyDate is Between Forms!ReportPrompt!startDate and forms!ReportPrompt!EndDate
以上意味着沒有VBA,沒有參數,如果查詢有一個百萬行,但僅有一行符合您的標準,那麼只有一行將下到網絡管道。您只需在報告中輸入以上內容,然後將報告設置爲在加載屬性=是時進行過濾。
但是,正如你所提到的,你不提供關於你的查詢在服務器端保存的位置或方式的信息。如果你談論的是一個存儲過程(一個龐大的細節,離開了),那麼你可以通過parmaters這樣:
Dim qdfPass As DAO.QueryDef
Dim rst As DAO.Recordset
Set qdfPass = CurrentDb.QueryDefs("MyPass")
qdfPass.SQL = "exec sp_myProc " & MyP1Var & "," & MyP2Var
qdfPass.Execute
上述假定您保存通過查詢客戶端一通稱爲爲mypass。
事實上,有十幾種方法可以將值傳遞給SQL服務器,但沒有關於何時/如何/何時/何時以及在何種情況下查詢數據將被消費的更多信息,那麼我們只面對野生和猜測猜測。
如果生成的數據用於報告,則如前所述,您並不真正需要(也不會從中受益)存儲過程,並使用「where」子句作爲打開報告命令的一部分就足夠了。如果您希望將此數據返回到表單,則適用相同的建議。
如果查詢和存儲過程僅用於服務器端處理,那麼調用存儲過程並傳遞參數的上述代碼就足夠了。
http://stackoverflow.com/questions/12404805/how-to-call-sql-server-stored-procedure-from-within-ms-access-vba –