プロが教える店舗&オフィスのセキュリティ対策術

あまりDB接続などに詳しくないので、
うまく説明できないと思いますがご了承下さい。

環境は
Win2000+VB6+SQLSERVER2000+ADO2.5

やりたいことは、
SQLSERVERに設定してあるストアドがあります。
そのストアドをVB上から呼び出し結果を得たいわけです。

ストアドは、1つのパラメータを与えることで、
そのパラメータの最大値を取得してきます。
そして、データベース内では最大値が+1されているというものです。

現在
Dim adoCon As ADODB.Connection
Dim adoCmn As ADODB.Command
Dim adoRs As ADODB.Recordset

''DBに接続
Call DB接続関数(adoCon)

Set adoCmn = New ADODB.Command
Set adoRs = New ADODB.Recordset

adoCmn.ActiveConnection = adoCon

adoCmn.CommandText = "EXEC ストアド名 'パラメータ'"

adoRs.Open adoCmn

という状態で、ストアド自体は動作することができました。
しかし、最大値を取得することができません。
adoRsにはきちんとレコードセットが返ってきてない感じです。
どうすれば、最大値を取得できるでしょうか?

A 回答 (2件)

その取得したい値(最大値)というのは、ストアドが更新して、どこかのテーブルに保存されているのですよね?


例えば、テーブル T1 のカラム C1 = 1 のレコードの、カラム C2 に取得したい値があるとすると、

...
adoCmn.CommandText = "EXEC ストアド名 'パラメータ'"
adoCmn.Execute

の後に

Set adoCmn2 = New ADODB.Command
adoCmn2.ActiveConnection = adoCon
adoCmn2.CommandText = "SELECT C2 FROM T1 WHERE C1=1"
Set adoRs = New ADODB.Recordset
adoRs.Open adoCmn2

とか

Set adoRs = adoCon.Execute("SELECT C2 FROM T1 WHERE C1=1")

となります。
    • good
    • 0
この回答へのお礼

おっしゃる通り、ストアドが更新した最大値は、
テーブル内に保存されております。

そして、tsukasa-12rさんのおっしゃるような
やり方で最大値は取得できました。

大変ありがとうございました。

お礼日時:2004/01/28 14:19

ストアドに出力パラメータを追加するか(呼び出し側ではパラメータオブジェクトを作成する。

)、"EXEC ~" とは別のコマンドで "SELECT ~" としてやればいいんじゃないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ストアドの変更に関してですが、
現在アクセスの別アプリにてそのストアドを使用しており、
変更することは困難となっております。
また、SELECT~というやつですが、
イマイチ理解できません。(;>_<;)ビェェン

お礼日時:2004/01/28 13:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!