Диалоговое окно Пошаговое исполнение макроса
Иллюстрация 11.14. Диалоговое окно Пошаговое исполнение макроса
Если в процессе выполнения макроса возникла ошибка, появляется диалоговое окно Ошибка выполнения макроса (Action Failed), аналогичное окну Пошаговое исполнение макроса (Macro Single Step), но без возможности продолжить процесс (кнопки Шаг (Step) и Продолжить
(Continue) недоступны). Можно только прервать выполнение макроса, нажав кнопку Прервать (Halt). В окне отображается макрокоманда, содержащая ошибку.
Поиск ошибок в макросах, как правило, не вызывает больших затруднений. Это связано с тем, что:
-
большинство синтаксических ошибок проверяется при вводе и система просто не даст ввести неправильное название макрокоманды или условное выражение (правда, она не защитит от ввода неправильного имени объекта, например несуществующей формы или элемента управления в форме);
-
макросы, как правило, достаточно просты и не содержат длинных последовательностей макрокоманд, в противном случае лучше написать процедуру на VBA, т. к. язык VBA предоставляет больше возможностей и имеет существенно лучшие средства отладки.
Совет
Прежде чем использовать ссылки на форму или элемент управления, рекомендуется выполнять проверку, открыта ли форма, с помощью функции isLoaded(). К сожалению, эта функция не является стандартной функцией Access, а обычно включается в модуль "Служебные функции" (Utility Function) базы данных "Борей". Вы можете скопировать ее оттуда в свою базу данных.
Можно легко отключить вывод на экран отладочных сообщений, для чего введите в столбец "Условия" (Condition) напротив соответствующих макрокоманд значение Ложь.
Еще один стандартный прием — установка точек останова. Его применяют для того, чтобы остановить выполнение макроса в определенной точке до завершения процесса. Для этого используется макрокоманда ОстановитьМакрос (StopMacro). Макрос будет выполняться до макрокоманды ОстановитьМакрос (StopMacro), после этого можно проверить результаты. Таким образом, можно локализовать ошибку с точностью до макрокоманды.