レコードセットを閉じる意味


nori  2004-12-08 20:45:53  No: 118121

VBからADOでAccessなどのデータベースに接続し、処理が終わったらレコードセット・コネクションを閉じる文を書くのですが、
よく両方の閉じる文が書かれているのを見ます。
コネクションが閉じられれば自動的にレコードセットも閉じると思うのですが、
両方書く意味というのはあるのでしょうか?
コネクションだけではいけないのでしょうか?


魔界の仮面弁士  2004-12-08 21:54:45  No: 118122

> コネクションが閉じられれば自動的にレコードセットも閉じると思うのですが、

そうとは限らないと思います。
閉じる場合もありますし、閉じない場合もありえますから。

DAOやRDOでは、接続してからでないとRecrodset/Resultsetは生成できませんが、
ADOでは別々に生成できるため、親子関係は希薄になっています。
(実際、Connection先が無い状態でRecordsetを生成することさえ可能ですし)

たとえば、クライアントバッチカーソルモードでRecordsetを開いた場合などは、
  RS.Open SQL, Cn, 〜
  Set RS.ActiveConnection = Nothing
  Cn.Close   'Recordsetは開いたまま、Connectionだけ閉じる
  '
  'RS.AddNew とか RS.Delete とか RS.Update とかの処理
  '
  Cn.Open   '再接続する
  Set RS.ActiveConnection = Cn
  RS.UpdateBatch
のように、『Connectionだけ切断』してオフラインで編集し、
あとから再接続して結果を一括反映させるような事もできますよね。


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

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






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