Ich habe über Fehlerbehandlung gefragt. Wenn während der Codeausführung ein Fehler auftritt und ich ein Recordset geöffnet habe, sollte ich es schließen? Das Versuchen einer recordset.close-Operation kann einen Fehler auslösen, und da ich mich in einem Codeabschnitt für die Fehlerbehandlung befinde, handelt es sich um einen unbehandelten Fehler.Zugriff schließen Recordset in Fehlerbehandlung
Wenn ich den Code zurückschicke, um mit einem anderen Label fortzufahren, kann es zur Endlosschleife werden. Wenn nun ein Boolescher Wert hinzugefügt wird, um zu prüfen, ob der Fehler zum ersten Mal aufgetreten ist, würde das funktionieren, aber brauche ich wirklich diesen ganzen Aufwand? Bleibt die Verbindung offen, wenn der Code terminiert und ich schließe ihn nicht? Wird es später Probleme geben?
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
Das würde funktionieren, aber ... wirklich?
...
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
Vielen Dank!
Nun, der harte Weg ist es dann ... Danke! – vacip
Ich würde es immer noch nicht direkt in den Fehler-Handler setzen ... Oder nichts anderes kann einen Fehler beim Schließen eines Recordsets verursachen, abgesehen davon, dass es nicht gesetzt ist? – vacip
Danke. Tut mir leid, ich war etwas beschäftigt. Ich fügte dem Code zusätzliche Zeilen hinzu und verbesserte den Fehlerhandler. Dies ist der Code, den ich oft benutze - für allgemeine Zwecke. Natürlich können Sie es ändern, um bestimmte Fehlernummer zu fangen und zu behandeln. –