3

我可以验证我的 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提供程序,但无法使用它访问存储过程。

相关参考:

  • ActiveX 数据对象记录集 6.0 Lib
  • ActiveX 数据对象 6.1
  • ActiveX 远程数据服务 6.0
4

2 回答 2

5

SET NOCOUNT ON在 SQL 存储过程的开头添加一个。

于 2013-10-11T20:43:08.113 回答
2

我怀疑这是问题所在,但您应该尝试在 proc 中设置 NOCOUNT ON 以确保这不是问题。

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
于 2013-10-11T20:43:33.703 回答