Отладка макроса

 

Не все макросы, действуют без сучка, без задоринки. Если вы допустили ошибку — может быть, ваш макрос пытается открыть несуществующий объект или использует бессмысленный аргумент — то получите исчерпывающее сообщение об ошибке, как показано на рис. 15.5.

Рис. 15.5. Это сообщение об ошибке выводится, если применяется макрокоманда ОткрытьТаблицу без заполненного обязательного аргумента Имя таблицы

 

 

Несмотря на то, что сообщения об ошибках макросов очень информативны, они не всегда предоставляют всю информацию, необходимую для точного указания проблемы. Например, сообщение об ошибке, приведенное на рис. 15.5, содержит несколько возможных причин -она могла (т. е. ошибка) появиться из-за аварийного завершения одной из команд ОткрытьТаблицу (что и произошло в данном примере), ПреобразоватьТекст или ПреобразоватьЭлектроинуюТаблицу. И даже если вы знаете, что виновата макрокоманда ОткрытьТаблицу, это знание не поможет вам, если в одном макросе эта команда вызывается несколько раз.

Для диагностики проблем можно использовать отладку — программное средство, позволяющее поместить ваш макрос под микроскоп и рассмотреть, что происходит на самом деле, Тип отладки, предоставляемый программой Access для макросов, называется пошаговой отладкой, поскольку позволяет поочередно тестировать команды макроса. Таким образом, вы узнаете, где именно возникает ошибка.

 

Для применения пошаговой отладки выполните следующие действия. 1. Откройте макрос в Конструкторе.

Все новые макросы начинают с режима Конструктор. Если вы хотите тестировать макрос, созданный ранее, найдите его в области переходов, щелкните правой кнопкой мыши и выберите команду Конструктор.

2.   Выберите на ленте Работа с макросами | Конструктор > Сервис > По шагам (Macro Tools | Design > Tools > Single Step).

По шагам (Single Step) — это кнопка-выключатель, т. е. она при выделении подсвечивается. После того как вы щелкнули эту кнопку, она должна быть подсвечена. (Если этого не произошло, значит, пошаговая отладка была уже включена, и вы ее только что выключили. Щелкните мышью кнопку По шагам еще раз, чтобы снова включить этот режим.)

3.   Выберите на ленте Работа с макросами | Конструктор > Сервис > Выполнить.

Ваш макрос начнет выполняться. Но появилось отличие. Перед каждым действием программа Access выводит на экран важную информацию в окне Пошаговое исполнение макроса. На рис. 15.6 показано, как оно функционирует.

Рис. 15.6. Это окно сообщает о том, что вы выполняете макрос, названный ProblematicMacro. Следующий шаг — выполнение макрокоманды ОткрытьТаблицу с аргументами, отображенными в области Аргументы. (Не обращайте внимания на поле Условие, поскольку вы пока не научились выполнять макросы с условием)

 

 

4. В зависимости от того, что вы хотите делать дальше, щелкните мышью одну из кнопок: Шаг, Продолжить или Остановить все макросы.

?     Кнопка Шаг выполняет команду. Если действие завершается успешно, программа Access снова приостанавливает макрос и выводит окно Пошаговое исполнение макроса с информацией о следующей команде. Именно поэтому описываемый процесс называется пошаговым и позволяет выполнять в каждый момент времени одно действие. Если вы щелкните мышью кнопку Шаг и команда завершится аварийно, то увидите информацию об ошибке, как показано на рис. 15.7.

?     Кнопка Продолжить выключает режим пошагового исполнения и выполняет оставшуюся часть макроса без прерываний. Если возникает ошибка, она приводит к завершению исполнения и выводу сообщения об ошибке, как в предыдущем варианте.

?      

 


 

 

Рис. 15.7. Когда возникает ошибка, вы не можете двигаться дальше. В окне Ошибка выполнения макрокоманды программа Access выводит номер ошибки для вашей проблемы (который полезен, если нужно искать помощь в интерактивной базе знаний корпорации Microsoft), и не разрешает вам идти дальше. Вы вынуждены щелкнуть мышью кнопку Остановить все макросы, устранить проблему и затем пробовать снова

 

 

? Кнопка Остановить все макросы завершает исполнение макроса досрочно. Слово "все" в названии кнопки означает, что если одновременно выполняется несколько макросов, Access завершит их все. Вы можете создать макрос, который запускает другой макрос. Если вы прекращаете процесс с описанной последовательностью действий, оба макроса будут завершены досрочно.

 

 

Примечание

Режим пошагового исполнения влияет на все макросы, включая те, которые созданы с помощью мастера построителя макрокоманды. Не забудьте отключить его, когда закончите тестирование своего макроса. В противном случае появится окно Пошаговое исполнение макроса, когда вы применяете макрос, работающий совершенно правильно.

 

 

 

Практические занятия для опытных пользователей. Обработка ошибок макроса

 

В макросах вы сталкиваетесь с двумя типами ошибок. Во-первых, существуют ошибки, которые сделаны в процессе создания макроса. С помощью пошаговой отладки вы можете локализовать их и исправить. Во-вторых, есть ошибки, которые возникают, когда макрос применяется в неверном контексте. Возможно, нужных вам данных нет в текущей записи или форма, которую вы пытаетесь использовать, не открыта. Устранить такого сорта ошибки не удастся с помощью изменения макроса, но можно сообщить программе Access, как поступать с ними.

Обычно Access прерывает выполнение макроса при возникновении ошибки. Если вы хотите применить другой подход, начните ваш макрос с макрокоманды ПриОшибке (OnError). Команда ПриОшибке выбирает в зависимости от значения аргумента Перейти (GoTo) один из трех вариантов обработки ошибок. Задайте его значение равным Сбой (Fail) для реализации стандартного поведения. Задайте в этом аргументе значение Далее (Next), и программа Access пропустит вызывающую сбой макрокоманду и выполнит следующую команду из списка.

 

Если же задать в аргументе значение Имя макроса (Macro Name), Access будет перемещаться к концу списка, пока не найдет заданный макрос. (С помощью значения Имя макроса вы сообщаете программе, к какому макросу перейти.) Как действует задание имен макросов в аргументе, вы узнаете в разд. "Группы макросов" далее в этой главе.

ПриОшибке (OnError) — необычная макрокоманда, поскольку она воздействует на весь остальной макрос (или, по крайней мере, до тех пор, пока не встретится еще одна макрокоманда ПриОшибке). В длинном сложном макросе макрокоманда ПриОшибке может вызываться несколько раз. Но применяйте варианты обработки ошибок с осторожностью, чтобы не вызвать дополнительные проблемы. Во многих макросах одна макрокоманда зависит от другой, поэтому лучше всего прервать его выполнение при первом же сигнале тревоги.

 

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100