投稿日 | : 2006/10/27(Fri) 12:25 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: Nothingのタイミング |
> クローズしたら必ずNotingという考えで良いですか?
Recordset にしても Connection にしても、多くの場合、「Close」と「参照の解放」は、
セットで使われる事が多いでしょうし、混乱が少なくて済むかと思います。
(明示的な Nothing 代入でも、別インスタンス代入やスコープによる自動解放でも OK)
ですが、常に Close と解放がセットというわけではありません。
たとえば、OLE DB のコネクションプーリング機構を使うときなどは、
「Conecction.Open 後 すぐに Close するが、アプリ終了まで Nothing しない」
という使い方もされますので、常に Close 直後に Nothing するわけではありません。
> レコードセットは数回作るという条件です。
たとえば、
RS.Close
Set RS = New ADODB.Recordset 'あるいは、Set RS = Cn.Execute(sql) など
のような使い方をするのであれば、Close 後の Nothing をしてもしなくても OK ですが、
RS.Close
RS.Open '引数無し
のような使い方をするのであれば、Nothing の代入を行ってはいけません。
あるいは、Close から、次の Open までの期間が長く、かつ、コネクションプーリングの必要が
無いのであれば、Close 直後に、直ちに Nothing 代入を行うべきでしょう。
ということで、端折って書けば「多くの場合は、Close 後の Nothing 代入で問題なし」
「ただしケースバイケースで、それを行うべきでは無いと言う状況もある」、と。