Access. Программирование на VBA

       

ExitHere


Эта метка является точкой выхода для процедуры. Рекомендуется использовать только одну точку выхода в одной процедуре. Если процедура выполняется без ошибок, вызывается код ExitHere и процедура за­канчивает работу. Код в ErrorHandler не выполняется, поскольку он находится в самом конце процеду­ры. Выполнение не доходит до этой точки в процедуре, поскольку выход из процедуры уже состоялся.

Метка

ExitHere — идеальное место для вставки кода очистки. Например, можно освободить любые объектные переменные, присвоив им пустое значение, закрыть базу данных, возвратить курсор в форме песочных часов на значение, принятое по умолчанию, и включить обновление экрана.

Оператор

On Error Resume

обычно должен быть первым в процедуре выхода. Это необходимо, поскольку некоторые выражения очистки сами по себе могут стать причиной ошибки. Например, если сбой произо­шел до открытия базы данных и объектной переменной в процедуре выхода присвоено значение Nothing (Set db = Nothing), возникает ошибка.

СОВЕТ

Если процедура выполняется медленно и при этом включается/выключается курсор в форме песочных часов, (соот­ветственно в начале и конце процедуры) необходимо быть очень осторожным, чтобы избежать проблем при возник­новении ошибки. Примером кода очистки, который необходимо поместить в код ExitHere

перед выходом из процедуры вне зависимости от того, возникла ошибка или нет, может служить Docmd.Hourglass false,

СОВЕТ

В коде ExitHere необходимо возвратить курсор в форме песочных часов на значение, принятое по умолчанию. Пе­сочные часы можно включить в начале процедуры. При возникновении ошибки перед обычным исчезновением песоч­ных часов в конце процедуры выполнение кода переходит к обработчику ошибок и изображение песочных часов остается на экране. Если в точке выхода курсору возвращается значение, принятое по умолчанию, он в любом слу­чае будет переустановлен.

Ниже приводится пример процедуры выхода с кодом очистки:

ExitHere:

On Error Resume Next

DoCmd.Hourglass False

DoCmd.Echo True

DoCmd.SetWarnings False



Содержание раздела