Access 2002

Создание собственного стека ошибок


Если приложение-клиент должно вызывать написанные вами функции из базы данных Access, которой оно управляет, нужно продумать механизм возвращения этими функциями достаточно подробных сообщений об ошибках. Если в функции, вызванной клиентом автоматизации, происходит сбой, клиент получает сообщение об ошибке автоматизации, смысл которого может быть не до конца понятен. Поэтому лучше создать собственный стек ошибок и поместить его в базу данных, к которой клиент сможет обратиться за подробным описанием произошедшего. Примером реализации этой идеи является включенный в базу данных CH11.MDB модуль basErrorStack. Его код приведен  11.14. В нем открывается форма со списком, в который заносится информация об ошибке. Поскольку допускается использование извне методов и свойств, принадлежащих формам Access 2002, приложение-клиент сможет прочитать список.

Если вам уже приходилось писать приложения-серверы автоматизации на Visual Basic, имейте в виду следующее. Как правило, для возвращения клиенту автоматизации сообщения об ошибке используется метод Raise определенного в VBA объекта Err. Однако в документации VBA сказано, что не все приложения поддерживают эту технологию, и, к сожалению, Access относится к их числу. Если в приложении Access вызвать метод Raise, будет сгенерирована ошибка времени выполнения, но приложение-клиент автоматизации не получит сообщение о ней. Чтобы увидеть все это в действии, запустите процедуру TestErr из файла CH11.MDB с помощью метода Run.

Модуль basErrorStack, приведенный  11.14, включает две процедуры для работы со стеком ошибок и одну процедуру для их тестирования. Первая процедура, InitErrs, открывает форму со списком ошибок (frmErrorStack) и удаляет из списка всю информацию.

Комментарии закрыты