
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
SQL ServerのストアドでOUTPUTパラメータを2つ
Visual Basic(VBA)
-
ExcelVBAからOracleストアド実行
Oracle
-
VBScriptからストアドプロシージャのOUT変数の取得について
Microsoft ASP
-
-
4
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
5
.NETからストアドプロシージャを実行
Visual Basic(VBA)
-
6
vbからストアドプロシージャ内発生のエラーメッセージ取得
SQL Server
-
7
ストアドプロシジャからストアドプロシジャを呼ぶには?
Oracle
-
8
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
9
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
10
VB6とVB.NETでNullの扱いが違う?
Visual Basic(VBA)
-
11
CloseとDisposeの違い
Visual Basic(VBA)
-
12
select insertで複数テーブルから値を取得したい
Oracle
-
13
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
14
実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
[VB.net] ボタン(Flat)のEnable...
-
複数のExcelファイルをマージす...
-
ダブルクリックで貼り付けた画...
-
【ExcelVBA】値を変更しながら...
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
-
vbsでのwebフォームへの入力制限?
-
Vba セルの4辺について罫線が有...
-
改行文字「vbCrLf」とは
-
Vba Array関数について教えてく...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
【マクロ】変数を使った、文字...
-
testファイル内にある複数のpng...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL ServerのストアドでOUTPUT...
-
Console.ReadLine()で、入力デ...
-
VBでストアドの戻りパラメータ...
-
Perlファイルのパラメータの変数名
-
SQL*LoaderのDATA引数
-
インラインフレームでpdfフ...
-
モデル予測制御の簡単な使用方...
-
sedで編集対象ファイルのコメン...
-
REDOログファイルを移動したい...
-
oracle tnsping
-
パラメータについて
-
バッチファイル
-
特定ページのみブラウザのBACK...
-
ORA-01013のエラーについて経験...
-
Oracleで流したSQLのログを取得...
-
CASE文のエラーについて
-
xy平面上の点P(x,y)に対し,点Q(...
-
はじめまして!
-
北朝鮮のミサイルについて
-
PL/SQLでログを確認したい。
おすすめ情報