2017-05-22 198 views
-3

我有一個在SQL Server中設置了多個值參數的存儲過程,但我不確定如何使用MS Access中的表作爲參數來調用存儲過程。SQL Server和MS Access 2016

下面是訪問參數表

| ID | EMPLOYEE NB | 
+----+-------------+ 
| 1 | A   | 
| 2 | B   | 
| 3 | C   | 

在SQL Server中的參數設置爲分隔。

因此,這將是

EXEC MyStoredProcedure 'A,B,C' 

回答

0

我想這都歸結到你多大,有多少參數有本地表。我的意思是,如果表格只是說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的查詢傳遞。

+0

謝謝Albert。它效果很好。 – Rbird