VBからADOでAccessなどのデータベースに接続し、処理が終わったらレコードセット・コネクションを閉じる文を書くのですが、
よく両方の閉じる文が書かれているのを見ます。
コネクションが閉じられれば自動的にレコードセットも閉じると思うのですが、
両方書く意味というのはあるのでしょうか?
コネクションだけではいけないのでしょうか?
> コネクションが閉じられれば自動的にレコードセットも閉じると思うのですが、
そうとは限らないと思います。
閉じる場合もありますし、閉じない場合もありえますから。
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だけ切断』してオフラインで編集し、
あとから再接続して結果を一括反映させるような事もできますよね。
ツイート | ![]() |