こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL Server 2000でのストアド

現在,データベースの勉強中ですが,下記の内容で困っています。

●SQL SERVER 2000のストアド
CREATE PROCEDURE Strd_Test (
@aaa varchar(10),
@bbb varchar(10),
@rowcount int output,
@msg varchar(100) output
)
AS
set nocount on
begin
select aaa,bbb
from T_test
where aaa=@aaa
and bbb=@bbb
end;
select @rowcount=@@rowcount, @msg='検索に成功しました';
return
GO

●Excel2003のVBA
Private Sub btn1_Click()
Set dbCN = New ADODB.Connection
dbCN.Open "Provider=SQLOLEDB;" _
& "Data Source=*****,9999;" _
& "Initial Catalog=DB_Test;" _
& "User ID=sa;Password="

Set dbCOM = New ADODB.Command
dbCOM.ActiveConnection = dbCN
dbCOM.CommandType = adCmdStoredProc
dbCOM.CommandText = "Strd_Test"
dbCOM.Parameters.Refresh
dbCOM.Parameters("@aaa") = "100"
dbCOM.Parameters("@bbb") = "あいうえお"

(1) ストアドの実行

(2) MsgBox "検索結果:" & dbCOM.Parameters("@rowcount").Value _
& vbCrLf & dbCOM.Parameters("@msg").Value

(3) WorkSheets("Sheet1").Cells(1, 1).CopyFromRecordset dbRS

dbRS.Close
Set dbRS = Nothing
Set dbCOM = Nothing
End Sub

●こんな感じで,検索結果のレコードセットと,
アウトプットパラメータの両方を取得したいのですが

ExcelのVBAから,(1)のところで,
  ・「dbCOM.Execute」とした場合には,
   (2)でアウトプットパラメータが正常に返ってきます
   (3)は,当然エラーです

  ・「Set dbRS = dbCOM.Execute」とした場合には,
   (2)でアウトプットパラメータが2つとも空です
   (3)は正常にレコードセットを取得できます

こうなってしまうのですが,レコードセットと
アウトプットパラメータの両方を取得するためには,
どこを修正すれば良いのでしょうか?
どなたか,お力を貸してください。

投稿日時 - 2009-02-26 10:07:41

QNo.4750254

困ってます

質問者が選んだベストアンサー

原因はリンクページの通りです。

したがって、方法は以下の2つのいずれかです。
・レコードセットを取得してからアウトプットパラメータを取得するように順序を変更する
・dbCN.Openの前に
obCN.CursorLocation = adUseClient
と追加する

参考URL:http://support.microsoft.com/kb/256234/ja

投稿日時 - 2009-02-26 12:31:39

お礼

jamshid6様,ご回答いただきまして,ありがとうございます。

ご提示いただいた2つの方法で,解決できました。
ずっと悩んでいたので,大変助かりました。
ありがとうございます。

投稿日時 - 2009-02-26 13:11:39

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問