2013-10-11 95 views
3

我可以驗證我的VBA代碼是否在服務器上執行存儲過程,但我無法將記錄集重新導回到Excel中。如何將SQL Server存儲過程結果返回給Excel

Set con = New ADODB.Connection 
Set cmd = New ADODB.Command 
Set rs = New ADODB.Recordset 

con.Open "Provider=SQLOLEDB;Data Source=" & ServerName & ";...."//works 
set rs = cmd.Execute(, SP_Param, adCmdStoredProc) // executes 
If rs.EOF = False Then WSP1.Cells(4, 1).CopyFromRecordset rs 
//tosses Operation is not allowed when the object is closed. 

我使用SQLOLEDB提供商嘗試,但我無法得到通過使用存儲過程。

相關參考文獻:

  • ActiveX數據對象的Recordset 6.0庫
  • 的ActiveX數據對象6.1
  • 的ActiveX遠程數據服務6.0
+0

有沒有機會在表中沒有記錄? – Santosh

+0

你的存儲過程是什麼? – nutsch

回答

5

添加SET NOCOUNT ON到您的SQL存儲過程的開始。

2

我懷疑這是問題,但您應該嘗試在proc中設置NOCOUNT ON以確保這不是問題。

-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 
相關問題