Базовые сведения о макросах

Несмотря на то, что вы могли этого не осознать, вы уже пользовались макросами. В главе 14 вы создавали кнопки, способные выполнять полезные задачи, например, открывать другие формы или переходить к конкретной записи. Для создания этих макрокоманд вы применя­ли мастер создания кнопок, который задает несколько простых вопросов и затем генерирует сделанный по мерке макрос.

Базовые сведения о макросах - student2.ru

Рис. 15.1. Этот макрос состоит из двух макрокоманд. Первая открывает таблицу, а вторая переходит к заданной записи. Когда вы запускаете макрос, программа Access начинает с вершины списка и двигается вниз, последовательно выполняя макрокоманды

Хотя мастер создания кнопок прост в применении, его не обвинишь в излишней гибко­сти. Теперь вы достаточно подготовлены для того, чтобы стать еще сильнее и создать собст­венный макрос.

Создание макроса

В следующем примере вы начнете, не спеша, с создания простого макроса, который откры­вает таблицу и переходит сразу к последней строке. Далее перечислены действия, необхо­димые для создания макроса.

1. Выберите на ленте Создание →Другие →Макрос.

На экране появится новое окно для создания нового макроса. Неофициально оно назы­вается конструктором макроса.

Любой макрос состоит либо из последовательности одного или нескольких шагов, либо из действий (макрокоманд). Для создания макроса вы формируете список макрокоманд, помещая каждую из них в отдельную строку (рис. 15.1). Первоначально этот список пуст и ваш макрос ничего не выполняет.

Базовые сведения о макросах - student2.ru

Рис.15.2. Щелкните кнопкой мыши направленную вниз стрелку (обведена), чтобы просмотреть представленные в алфавитном порядке макрокоманды, которые можно использовать. После того как макрокоманда выбрана, в нижнем правом углу окна появляется краткое, но полезное описание

2. Выберите первую макрокоманду.

У программы Access есть предварительно подготовленный список макрокоманд, которые можно использовать для приготовления макросов. Когда добавляется команда, ее просто выбирают из этого списка, как показано на рис. 15.2. В данном примере начните с выбора макрокоманды ОткрытьТаблицу(ОреnТаble).

Примечание

В данный момент вы работаете только с макрокомандами, которые программа Access считает безопасными для всех БД. Немного позже (см. разд. "Опасные макрокоманды" далее в этой главе) вы рассмотрите возможность применения нескольких команд, использование которых программа Access считает рискованным делом.

Базовые сведения о макросах - student2.ru

Рис. 15.3.Когда в списке выбирается макрокоманда, все аргументы отображаются в нижней части окна. Как видно из данного примера, у макрокоманды ОткрытьТаблицу— три аргумента (Имя таблицы, Режими Режим данных).Каждый раз, когда вы щелкаете кнопкой мыши в одном из этих полей, в поле, расположенном справа, появляется краткое описание аргумента. Значения ваших аргументов также отображаются в виде разделенного запятыми списка в столбце Аргументы,расположенном рядом с макрокомандой

3. В нижней части вкладки макроса в разделе Аргументы макрокоманды(рис. 15.3) выбе­рите параметры для вашего макроса.

Большинству макрокоманд для выполнения их работы нужна от вас некоторая инфор­мация. В макрокоманде ОткрытьТаблицу(ОреnТаble) мало смысла до тех пор, пока вы

не сообщите программе Access, какую именно таблицу хотите открыть. Эти дополни­тельные сведения и называют аргументами.

У макрокоманды ОткрытьТаблицу(ОреnТаble) три аргумента.

o Имя таблицыссылается на таблицу, которую вы хотите открыть. Его можно выбрать из раскрывающегося списка таблиц. В данном примере можно использовать любую непустую таблицу.

o Режимпозволяет выбрать применяемый режим представления. Можно выбрать обычный режим Таблицадля ввода информации, Конструктордля изменения струк­туры таблицы, Просмотрдля подготовки данных к печати или Сводную таблицуи Сводную диаграммудля работы с итогами сводной таблицы. В данном примере вы­берите режим Таблица.(Конечно, когда таблица открыта, можно переключиться в другой режим представления, щелкнув правой кнопкой мыши заголовок или кнопку режима на ленте.)

o Режим данныхопределяет, какой тип изменений разрешен. Можно использовать стандартный вариант Изменение(Edit) для разрешения любых изменений, Только чтение(Read Only) для запрета каких бы то ни было изменений или Добавление(Add) для разрешения только добавления записей. В данном примере выберите Только чтение.

Примечание

Вы уже видели, что у пользовательского макроса гораздо больше функциональных возможно­стей, чем у мастера построения макрокоманды (Command Builder wizard). Когда применяется мастер, можно открывать формы и отчеты, но не обычные таблицы, и нет средств управления режимом представления или разрешенными видами изменений. Макрос не сталкивается с по­добными ограничениями.

4. При желании введите в столбец Примечаниедополнительную информацию, которая напомнит назначение макрокоманды.

Не используйте столбец Примечаниедля объяснения очевидного (как, например, "Открывает таблицу Products"). В этом столбце следует объяснять важность шагов в наиболее сложных операциях. Сейчас вам не нужны комментарии, но позже, когда вы создадите группы макросов и будете применять условия, вы поймете полезность ком­ментариев.

5. Перейдите на следующую строку и повторите шаги 2—4 для вставки другой макрокоманды.

Вы можете вставить в макрос практически неограниченное число макрокоманд. (При наличии маленьких буферов в программе Access макрос может содержать до 999 макро­команд.) Каждая команда занимает отдельную строку, и программа Access выполняет их по порядку, перемещаясь сверху вниз.

Для завершения данного примера добавьте макрокоманду НаЗапись(GoToRecord). Это действие обеспечивает получение нужной записи в таблице, которую вы только что от­крыли.

При использовании аргументов следует указывать корректный объект (задайте Таблица в качестве Типа объектаи имя таблицы, которую вы выбрали в пункте 3, в качестве Имени объекта).Затем можно использовать аргументы Запись(Record) и Смещение(Offset) для точного задания той позиции, в которую вы хотите перейти. С помощью

аргумента Записьможно выбрать переход к предыдущей строке (Предыдущая (Previous)), к следующей строке (Следующая (Next)), к заполнителю новой строки в конце таблицы (Новая(New)), к заданной строке (Конкретная(Go To)), к первой строке (Первая(First)) или, как в данном примере, к последней строке (Последняя (Last)). Если вы­брать Конкретная,можно использовать аргумент Смещениедля указания точной пози­ции, например, если задать Смещение5, обеспечивается переход к 5-й записи.

Примечание

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

И просто для смеха, почему бы не вставить еще одну макрокоманду? Испытайте команду Сообщение(MsgBox), отображающую выбранное вами сообщение в небольшом инфор­мационном окне. Задается сообщение в аргументе Сообщение(Message). Задайте, на­пример, такой текст: "Ваш первый макрос только что сделал свое дело". Можно также добавить необязательный заголовок (с помощью аргумента Заголовок(Title)), преду­преждающий звуковой сигнал (задав в аргументе Сигнал(Веер) значение Да) и встроен­ную пиктограмму (с помощью аргумента Тип(Туре)).

Подсказка

В любой момент можно изменить порядок выполнения макрокоманд. Просто щелкните кнопкой мыши поле слева от элемента, который хотите переместить; этот щелчок выделяет макро­команду. Затем перетащите команду с помощью мыши в новое место. Программа Access ав­томатически раздвинет другие макрокоманды.

6. Нажмите комбинацию клавиш <Ctrl>+<S> для сохранения макроса и задайте ему имя.

В этом примере можно назвать макрос ShowTheLastProduct(отображение последнего товара). Если вы не сохраните макрос, программа Access вежливо предложит вам сделать это во время закрытия окна макроса или первого запуска вашего макроса.

Макрос отображается в области переходов. Если ваши объекты сгруппированы по типу объекта, то вы заметите, что у макроса свой тип. Если применяется вариант группировки Таблицы и связанные представления(Tables and Related Views), программа Access вставит макрос в дополнительную группу в конце списка, названную Несвязанные объекты(Unrelated Objects).

Примечание

Когда используется мастер построителя макрокоманды, также создается макрос. Но этот мак­рос не выводится в области переходов, поскольку он спрятан в конкретной форме. Такой тип макроса называется внедренным, поскольку он встроен внутрь формы.

Запуск макроса

Теперь, когда макрос завершен, можно его испытать. Программа Access предоставляет четы­ре способа запуска макроса.

■ Можно запустить его явно. Найдите нужный макрос в области переходов и дважды щелкните его кнопкой мыши. Этот вариант действует, если макрос еще не открыт. Если

же макрос открыт, выберите на ленте Работа с макросами | Конструктор→ Сервис→ Выполнить(Macro Tools | Design → Tools →Run).

Подсказка

Если вы применили в области переходов фильтрацию, такую что макрос не отображается на экране, вы все же можете его запустить. Выберите на ленте Работа с базами данных→ Мак­рос→ Выполнить макрос(Database Tools → Macro → Run Macro). У вас появится возмож­ность выбрать ваш макрос из списка.

Можно запустить макрос с помощью клавиш, например, задать запуск макроса, откры­вающего ежемесячный финансовый отчет при нажатии комбинации клавиш <Ctrl>+<F>. Вы узнаете, как это делается, в разд. "Назначение макросу комбинации кла­виш " далее в этой главе.

Можно запускать макрос автоматически при первом открытии БД. Вы можете создать макрос, который позволяет всегда начинать работу с БД запуском вашего любимого за­проса и отображением его результатов. В разд. "Настройка макроса запуска" далее в этой главе вы попробуете сделать это.

Базовые сведения о макросах - student2.ru

Рис. 15.4.Результат работы макроса ShowTheLastProduct.Программа Access открывает таблицу Products (врежиме Только чтение,поэтому запрещены любые изменения) и переходит к самой последней, самой свежей записи, а затем выводит на экран сообщение, информируя вас о завершении работы макроса

■ Можно присоединить макрос к форме. Вы можете задать автоматический запуск макроса при щелчке мышью кнопки или при вводе новых данных. Это наиболее распространен­ный способ выполнения макроса и именно так действует мастер построения макро­команды. В разд. "Присоединение макросов к формам" далее в этой главе вы сможете оп­робовать этот метод.

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

Подсказка

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

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

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

Базовые сведения о макросах - student2.ru

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

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

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

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

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

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

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

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

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

Базовые сведения о макросах - student2.ru

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

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

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

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


Базовые сведения о макросах - student2.ru


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

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

Примечание

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

Наши рекомендации