我正在使用MS-Access 2007開發的一箇舊的大規模系統,我負責維護(包括更改的實現)。Ms-Access - 調用返回記錄集的存儲過程
系統與SQL-Server(2012)進行交互。
目前,我需要實現一個更改,其中需要調用一個新的存儲過程,它返回一個簡單的記錄集,每個記錄都是一個字符串。
我試圖用於調用應用程序中已存在的一些代碼(使用ADO並複製到我正在處理的表單中),但沒有任何我嘗試過的方法。
這裏是代碼我試圖使用方法:
glblsqlstrToLabels = "EXEC p_Labels_Print 1 , 2878954 , 'OC9991' , '89029' , 4 , 1 , 'dummy'"
雖然我使用完全相同的連接字符串,因爲它正在使用的所有在應用程序中,有一個錯誤執行上述語句返回消息(類似...未打開...)。
我開始懷疑我調用函數的方式有錯誤(例如,沒有爲它定義任何參數,並期望類似於select
語句的行爲)。
任何幫助將不勝感激。
編輯:
以下是的代碼片段說明什麼,我需要有工作:
Dim RS As Recordset
' Connection string is: Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=True;Data Source=****;User ID=****;Password=****;Initial Catalog=***;Data Provider=SQLOLEDB.1
MyCommand = "EXEC p_Labels_Print 1 , 2878954 , 'OC9991' , '89029' , 4 , 1 , 'asdasd'"
RS.Open MyCommand, CurrentProject.Connection
Do Until RS.EOF
Print <record retrieved>
Loop
RS.Close
Set RS = Nothing
我得到的錯誤是:Error: Operation is not allowed when the object is closed.
請編輯你的問題,幷包括**完整**代碼,調用過程,以及完整的+確切的錯誤信息。謝謝。 – Andre
您是否在SQL Management Studio中測試過該命令? – Kris
查看示例代碼https://support.microsoft.com/zh-CN/help/185125/how-to-invoke-a-stored-procedure-with-ado-query-using-vba-c-java,實施它,並告訴我們你遇到的任何錯誤 –