フォームが閉じた際にcnが開いてません、などとエラーがでます。
できればif文でcnがcloseしてなかったらcloseするみたいなif文
がかければよいと思っています。ですがcnの今の状態がわかるような
言葉がみつかりません。
開発環境を教えてください。
感想文みたいな書き方だな・・・。
recordstで過去ログは検索した?
開発環境は、VB6 Personal です。
> cnの今の状態がわかるような言葉がみつかりません。
いえ、普通に見つかるはずなんですけど。
こんな感じですかねえ。
(まんまコードで、ちょっと大甘かな?みなさん怒んないで!)
'CnというADOコネクションが既にあると仮定・・
If Not (Cn Is Nothing) Then
If Cn.State <> adStateClosed Then
Cn.Close
End If
Set Cn = Nothing
End If
こんなのをFunctionとかSubにしてそのフォームに実装すれば
いいと思います。
・・でもこの件の本当の問題はフォームが閉じる以前に
なんでコネクションを(いらなくなってしまった時点で)クローズ
する処理をしてないの?ってことなんではと。。
フォームのLoad時にOpen、
フォームのUnload時にClose&Nothing
で統一して、フォーム内でひとつのConnectionを使いまわしたほうが、
シンプルかつ、パフォーマンスがよくて、
複数Connectionでの処理の競合の心配が少なくて、
今回みたいなCloseし忘れの心配も少ないかも(経験則)。
途中でCloseしなければならない理由が特になければですが。
あとは、
Dim cn As New ADODB.Connection
みたいな暗黙の初期化が行われるコーディングをしてしまうと、
開いてもいないConnectionをUnload時にCloseしにいってエラーになる
という心配もありますね。
そういう場合は、
Dim cn As ADODB.Connection
として、使うときに明示的に、
Set cn = New ADODB.Connection
としてやれば、上記のような問題が回避できるかと。
ツイート | ![]() |