レコードセットやコネクッションを・・・


  2005-06-24 19:53:56  No: 123008

フォームが閉じた際にcnが開いてません、などとエラーがでます。
できればif文でcnがcloseしてなかったらcloseするみたいなif文
がかければよいと思っています。ですがcnの今の状態がわかるような
言葉がみつかりません。


ぶぶ  2005-06-24 20:15:40  No: 123009

開発環境を教えてください。


ささ  2005-06-24 20:22:13  No: 123010

感想文みたいな書き方だな・・・。
recordstで過去ログは検索した?


  2005-06-24 20:39:04  No: 123011

開発環境は、VB6 Personal です。


たくみ  2005-06-25 04:23:20  No: 123012

> 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にしてそのフォームに実装すれば
いいと思います。

・・でもこの件の本当の問題はフォームが閉じる以前に
なんでコネクションを(いらなくなってしまった時点で)クローズ
する処理をしてないの?ってことなんではと。。


もげ  2005-06-25 06:56:49  No: 123013

フォームの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
としてやれば、上記のような問題が回避できるかと。


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

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






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