ADOで連続したSELECTクエリを実行し、レコードセットに全てを格納するには

解決


AC  2006-02-11 05:51:33  No: 94135

VB6でSQLServerにADO接続しています。

複数のSELECTクエリを一括で実行した際に、
全ての結果をレコードセットに格納するクラスを
作成しています。

例えば
Set sqlRec = sqldb.Execute("BEGIN SELECT〜 END BEGIN SELECT〜 END〜")
の様に複数のSELECTクエリを実行した場合、
レコードセットには最後のクエリの結果しか格納されていません。

これをレコードセットを動的に作成する(できない?)や
クラスのプロパティで何個目のSELECTかを指定して、その内容を取得する。
などの方法で全ての結果を知りたいのです。

なにか良い方法は無いものでしょうか?
よろしくお願いいたします。


魔界の仮面弁士  2006-02-11 07:01:41  No: 94136

> 全ての結果をレコードセットに格納するクラスを
レコードセットの内容を保存したいという意味であれば、
Saveメソッドで、Streamオブジェクトなどに永続化するとか。

> の様に複数のSELECTクエリを実行した場合、
NextRecordset メソッドを使うとか。

> レコードセットには最後のクエリの結果しか格納されていません。
Connection.Execute で開いているからかも。


AC  2006-02-14 00:19:18  No: 94137

魔界の仮面弁士さんありがとうございます。

教えていただいたことを調べて
色々と試してみます。


AC  2006-02-14 00:26:32  No: 94138

> レコードセットには最後のクエリの結果しか格納されていません。
Connection.Execute で開いているからかも。

せっかくご回答を頂いたのに申し訳有りません。
最後のクエリではなく最初のクエリでした。


魔界の仮面弁士  2006-02-14 00:39:39  No: 94139

> 最後のクエリではなく最初のクエリでした。

ですよね。そうだと思って、『「最初の」の書き間違いだろうな…』、
という前提で回答しています。(^^;

いずれにしても、NextRecordset の利用を検討してみてください。


AC  2006-02-14 01:52:08  No: 94140

魔界の仮面弁士さん何度もありがとうございました。

始めはNextRecordsetをMoveNextと同じように記述していて
なぜできないのか悩んでいましたが、無事解決しました。

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加