エラー処理について不思議でした。コードの実行中にエラーが発生し、レコードセットを開いている場合は、閉じる必要がありますか? recordset.close操作を試行するとエラーが発生する可能性があります。エラー処理コード部分の中にあるので、処理されないエラーになります。エラー処理でレコードセットにアクセスします
コードを送信して別のラベルで処理を続けると、無限ループになる可能性があります。このエラーが最初に表示されるかどうかを確認するためにブール値を1つ追加しても問題ありません。 コードが終了して閉じないと接続は開いたままになりますか?それは後でトラブルを引き起こすでしょうか?
Dim rs As DAO.Recordset
Set rs = CurrentDB.OpenRecordset("SELECT * FROM tblSetting")
On Error GoTo handler
'do things
rs.Close
Set rs = Nothing
Exit Sub
handler:
rs.Close
'Set rs = Nothing '-this one is not necessary, as terminating the sub should clear up all references to it, hence Garbage Collector can pick it up
End Sub
これは機能しますが、本当にですか?
...
Termination:
rs.Close
Set rs = Nothing
Exit Sub
handler:
if ErrorHappened=True then
msgbox "fatal error"
exit sub
else
ErrorHappened=True
resume termination
End If
ありがとうございます!
さて、難しいのは、それでは...ありがとう! – vacip
私はまだそれを直接エラーハンドラに入れませんでした...または何も設定されていない以外のレコードセットを閉じるときにエラーが発生する可能性がありますか? – vacip
ありがとうございます。申し訳ありません、私は少し忙しかったです。コードに余分な行を追加し、エラーハンドラを改善しました。これは私が使用しているコードのかなりの部分です - 一般的な目的のためです。もちろん、特定のエラー番号を捕まえて処理するように変更できます。 –