
No.3ベストアンサー
- 回答日時:
#2のxcrOSgS2wYさんが飛ばしているリンク先の、.NETサンプルを書いた者です。
.NETからVB6へのコンバートをやってみました。
(いつもと逆方向への変換なので、違和感がありました^^;;;)
ストアドは、参考URLのまま利用しています。
Option Explicit
Sub Main()
Const DEF_ストアド名 As String = "ストアド"
Dim l_adoCnn As ADODB.Connection
Dim l_adoCmd As ADODB.Command
Dim l_adoRec As ADODB.Recordset
Set l_adoCnn = New ADODB.Connection
Set l_adoCmd = New ADODB.Command
'コネクション設定
l_adoCnn.CursorLocation = adUseClient '← これ重要、結構忘れられる。
l_adoCnn.Open "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=master;uid=sa;pwd=sa"
With l_adoCmd
'コネクションをコマンドに設定
Set .ActiveConnection = l_adoCnn
'コマンド種別 = ストアド
.CommandType = adCmdStoredProc
'ストアド名を指定
.CommandText = DEF_ストアド名
'パラメータ追加:戻り値
.Parameters.Append パラメータ作成(l_adoCmd, "@戻り値", adInteger, 4, adParamReturnValue)
'パラメータ追加:引数(I/I/O/IO)
.Parameters.Append パラメータ作成(l_adoCmd, "@パラム1_VAR_I", adVarChar, 12, adParamInput, "abcde")
.Parameters.Append パラメータ作成(l_adoCmd, "@パラム2_INT_I", adInteger, 4, adParamInput, 2)
.Parameters.Append パラメータ作成(l_adoCmd, "@パラム3_VAR_O", adVarChar, 26, adParamOutput)
.Parameters.Append パラメータ作成(l_adoCmd, "@パラム4_INT_IO", adInteger, 4, adParamInputOutput, 3)
End With
'ストアド実行
Set l_adoRec = l_adoCmd.Execute
'実行結果を出力
Dim i As Integer
Dim l_str結果 As String
With l_adoCmd
For i = 0 To .Parameters.Count - 1
l_str結果 = l_str結果 & i & vbTab & .Parameters(i).Name & vbTab & .Parameters(i).Value & vbCrLf
Next
End With
Call MsgBox(l_str結果, vbInformation, "結果出力")
End Sub
'パラメータ作成関数
Private Function パラメータ作成( _
ByRef p_adoコマンド As ADODB.Command _
, ByVal p_strパラメータ名 As String _
, ByVal p_dtpDBタイプ As ADODB.DataTypeEnum _
, ByVal p_intサイズ As Integer _
, ByVal p_pdrパラメータ種別 As ADODB.ParameterDirectionEnum _
, Optional ByVal p_obj初期値 _
) As ADODB.Parameter
Dim l_adoPrm As ADODB.Parameter
Set l_adoPrm = p_adoコマンド.CreateParameter(p_strパラメータ名, p_dtpDBタイプ, p_pdrパラメータ種別, p_intサイズ)
l_adoPrm.Value = IIf(IsMissing(p_obj初期値), vbNull, p_obj初期値)
Set パラメータ作成 = l_adoPrm
End Function
No.2
- 回答日時:
コンピューター [技術者向け] > プログラミング > Visual Basic
No.1648176 質問:SQL ServerのストアドでOUTPUTパラメータを2つ
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1648176
に、VB.NETでADO.NETを使ってストアドのOUTPUTパラメータを受け取る例があります。
おそらくADO.NETでできることは、面倒さえいとわなければADOでもできるかと思います。
No.1
- 回答日時:
昔の話ですが、SQLserverへODBCでコネクションを張ってMS-ACCESSからDB操作したことがあります。
そのときは不可能でした。ODBCはSQLserverからのリターンコードを受け取ることが出来ない仕様だったと記憶しています。今回のお話ではADO経由ということなので推測の域を出ませんが、ADOもOLEコントロールの一部なのでODBC経由のOLEコントロールなのかなと考えます。となると冒頭同様、「リターンは受け取れない仕様」ではないでしょうか。自信ありません。いい加減でごめんなさい。
アドバイスありがとうございます。
出来ないだろうという情報でもありがたいです。
でないとずっと調べつづけそうなので、、、
別の仕様も視野に入れてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Ruby vscode 文字化け 1 2022/05/21 19:17
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
このQ&Aを見た人はこんなQ&Aも見ています
-
SQL ServerのストアドでOUTPUTパラメータを2つ
Visual Basic(VBA)
-
.NETからストアドプロシージャを実行
Visual Basic(VBA)
-
vbからストアドプロシージャ内発生のエラーメッセージ取得
SQL Server
-
-
4
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
5
VBScriptからストアドプロシージャのOUT変数の取得について
Microsoft ASP
-
6
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
7
ストアドプロシジャからストアドプロシジャを呼ぶには?
Oracle
-
8
ExcelVBAからOracleストアド実行
Oracle
-
9
バッチで実行するVBScriptからのストアドプロシージャの実行
その他(プログラミング・Web制作)
-
10
VB6とVB.NETでNullの扱いが違う?
Visual Basic(VBA)
-
11
オブジェクト参照がオブジェクト インスタンスに設定されていません というエラーについて
Microsoft ASP
-
12
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
13
select insertで複数テーブルから値を取得したい
Oracle
-
14
CloseとDisposeの違い
Visual Basic(VBA)
-
15
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
16
実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【VBA】 結合セルに複数画像と...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】開いているブックの...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
Vba セルの4辺について罫線が有...
-
エクセルのVBAコードと数式につ...
-
エクセルの改行について
-
VBA ユーザーフォーム ボタンク...
-
Excelマクロで使うVBAコードを...
-
VBAの質問(Msgboxについて)です
-
VBAでセルの書式を変えずに文字...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】変数を使った、文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL*LoaderのDATA引数
-
SQL ServerのストアドでOUTPUT...
-
VBでストアドの戻りパラメータ...
-
Console.ReadLine()で、入力デ...
-
REDOログファイルを移動したい...
-
oracle tnsping
-
ファイル操作について
-
ORA-01013のエラーについて経験...
-
Oracleで流したSQLのログを取得...
-
DOSプロンプトとコマンドプロン...
-
PL/SQL PLS-00103エラーについて
-
CASE文のエラーについて
-
xy平面上の点P(x,y)に対し,点Q(...
-
ORA-01843: 指定した月が無効で...
-
はじめまして!
-
クローンソフトで、Acronis Tru...
-
SQL*Plusで、コマンドの返答を...
-
Oracleの起動時に、マウントし...
-
PL/SQLでログを確認したい。
-
4GB = 4096MB ではない?
おすすめ情報