我想這都歸結到你多大,有多少參數有本地表。我的意思是,如果表格只是說5或15的值,那麼沒問題。但是,如果表是幾千,那麼我不認爲傳遞這樣一個長的字符串將無法正常工作。
假設你有tblParms?此代碼將起作用:
Dim strParms As String
With CurrentDb.OpenRecordset("tblWithParms")
Do While .EOF = False
If strParms <> "" Then strParms = strParms & ","
strParms = strParms & ![MPLOYEE NB]
.MoveNext
Loop
End With
With CurrentDb.QueryDefs("MyPass")
.SQL = "EXEC MyStoreProcedure '" & strParms & "'"
.ReturnsRecords = False
.Execute
End With
如果SQL存儲過程返回記錄,那麼您會將結果返回給reocrdset。以上最後一個存儲過程調用代碼片段將因此變成
Dim rstReturn As DAO.Recordset
With CurrentDb.QueryDefs("MyPass")
.SQL = "EXEC MyStoreProcedureMrZoo '" & strParms & "'"
.ReturnsRecords = True
Set rstReturn = .OpenRecordset
End With
因此,第一部分只需構建您所需的參數。第二部分調用存儲過程傳遞所需的值。該代碼假定您設置了一個名爲MyPass的查詢傳遞。
謝謝Albert。它效果很好。 – Rbird