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 ONSQL ストアド プロシージャの先頭にa を追加します。

于 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 に答える