我可以验证我的VBA代码是否正在服务器上执行存储过程,但是我无法将记录集恢复到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
提供程序,但无法使用该提供程序访问存储过程。
相关参考文献:
答案 0 :(得分:5)
将SET NOCOUNT ON
添加到SQL存储过程的开头。
答案 1 :(得分:2)
我怀疑这是问题,但你应该尝试在proc中设置NOCOUNT,以确保不是问题。
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;