Мне было интересно об обработке ошибок. Если во время выполнения кода возникает ошибка, и у меня есть набор записей, я должен закрыть его? Попытка операции recordset.close может вызвать ошибку, и поскольку я внутри части кода обработки ошибок, это будет необработанная ошибка.Access close Recordset при обработке ошибок
Если я отправлю код обратно для продолжения на другом ярлыке, он может стать бесконечным циклом. Теперь добавим одно логическое значение, чтобы проверить, будет ли это в первый раз появляться ошибка, но мне действительно нужна вся эта суета? Будет ли соединение оставаться открытым, если код завершается, и я его не закрываю? Это вызовет проблемы позже?
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
Спасибо. Извините, я немного занят. Я добавил дополнительные строки для кода и улучшен обработчик ошибок. Это довольно часто кусок кода, который я использую для общих целей. Конечно, вы можете изменить его, чтобы поймать и обработать конкретный номер ошибки. –