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