ms access. Макросы · 12.04.2013 доц. Шкалето В.И.1 ms access. Макросы...

75
12.04.2013 доц. Шкалето В.И. 1 MS Access. Макросы Лекции по дисциплине «Основы программирования и информационных технологий», прочитанные на кафедре ФМЭГ ФТ-факультета НТУ «ХПИ»

Upload: others

Post on 26-Apr-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 1

MS Access. Макросы

Лекции по дисциплине «Основы программирования и информационных технологий», прочитанные на кафедре ФМЭГФТ-факультета НТУ «ХПИ»

Page 2: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 2

1. Расширение средств Microsoft Access

В основной набор средств Microsoft Accessвходят макросы (небольшие программы наязыке макрокоманд системы Access) имодули (процедуры на языке Visual Basicfor Application, VBA). С их помощьюможно существенно расширитьфункциональные возможностисоздаваемого вами приложения и настроитьего на нужды конкретных пользователей.

Page 3: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 3

2. Рассматриваемые вопросы: Понятие макроса Использование макросов в приложениях Создание макросов и групп макросов Задание условий для управления процессом выполнения макроса Различные способы запуска макросов Советы по отладке макросов Обработка событий в формах и отчетах с помощью макросов Преобразование макросов в процедуры VBA

Page 4: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 4

3. Использование макросов в базе данных Microsoft Access

С помощью макросов можно выполнитьпрактически все действия над объектами Access.Макрос в Access представляет собой

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

Page 5: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 5

3. Использование макросов в базе данных Microsoft Access

Каждая макрокоманда имеетопределенное имя и, возможно, один илинесколько аргументов, которые задаютсяпользователем. Например, прииспользовании макрокомандыОткрытьФорму (OpenForm) в качествеаргументов необходимо задать, по крайнеймере, имя открываемой формы и режимвывода ее на экран.

Page 6: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 6

4. Макрокоманды

В нижеследующей таблице содержитсясписок макрокоманд Microsoft Access,сгруппированных по категориям: работа сданными в формах и отчетах;выполнение команд, макросов,процедур и запросов; работа собъектами; импорт/экспорт данных иобъектов и прочие. В категорию"Прочие" собраны все макрокоманды,которые позволяют влиять на интерфейсприложения.

Page 7: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 7

4.1 Макрокоманды

Категория

Назначение

Макрокоманда

Работа с данными в формах и отчетах

Отбор данных Применить Фильтр (ApplyFilter)

Перемещение по данным

Следующая Запись (FindNext), Найти Запись (FindRecord) , К Элементу Управления (GoToControl), На Страницу (GoToPage), На Запись (GoToRecord)

Page 8: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 8

4.1 Макрокоманды

Категория

Назначение

Макрокоманда

Работа с данными в формах и отчетах

Отбор данных Применить Фильтр (ApplyFilter)

Обновление данных или экрана

Обновление (Requery), Показать Все Записи (ShowAllRecords )

Выполнение Выполнение команды

Выполнить Команду (RunComraand)

Page 9: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 9

4.1 Макрокоманды

Категория

Назначение

Макрокоманда

Выполнение Выполнение макроса, процедуры или запроса

Запуск Макроса (RunMacro), Запуск Программы (RunCode), Открыть Запрос (OpenQuery), 3anycк 3anpoca SQL (RunSQL)

Выполнение другого приложения

Запуск Приложения (RunApp)

Page 10: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 10

4.1 Макрокоманды

Категория

Назначение

Макрокоманда

Выполнение Прерывание выполнения

Отменить Событие (CancelEvent) Остановить ВсеМакросы (StopAllMacros) ОстановитьМакрос (StopMacro)

Выход из Microsoft Access

Выход (Quit)

Page 11: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 11

4.1 Макрокоманды

Категория

Назначение

Макрокоманда

Импорт/экспорт

Передача объектов Microsoft Access в другие приложения

Вывести В Формате (OutputTo), Отправить Объект (SendObject)

Преобразование формата данных

Преобразовать Базу Данных (Transfer Database), Перенос Базы Данных SQL (Transfer SQLDatabase), Преобразовать Электронную Таблицу (Transfer Spreadsheet), Преобразовать Текст

Page 12: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 12

4.1 Макрокоманды

Категория

Назначение

Макрокоманда

Работа с объектами

Копирование, переименование и сохранение объекта

Копировать Объект (CopyObject), Копировать Файл Базы Данных (CopyDatabase File), Переименовать (Rename), Сохранить (Save)

Прочие Вывод на экран или скрытие встроенной или специальной панели инструментов Подача звукового сигнала

Панель Инструментов (ShowToolbar),

Сигнал (Веер)

Page 13: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 13

4.2 Макрокоманды

Как видно из этой таблицы, действия, которые могут быть выполнены с помощью макросов, очень разнообразны. Даже если вы не будете использовать макросы в своих приложениях, имеет смысл изучить эти макрокоманды, поскольку их можно использовать и в процедурах VBA

Page 14: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 14

4.2 Макрокоманды

Использование макросов оправдано тем, что ихлегко создавать. Для создания макроса требуетсязнать лишь основные приемы работы в MicrosoftAccess и Windows, такие как перетаскиваниеобъектов из окна База данных (Database) вспециальное окно — Конструктор макросов(Macro Design), выбор действия из списка иввод выражений в качестве аргументовмакрокоманды. Применяя макросы можнополучить достаточно функциональноеприложение.

Page 15: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 15

4.2 Макрокоманды

Основное назначение макросов — это созданиеудобного интерфейса приложения: чтобы формы иотчеты открывались при нажатии кнопок в формеили на панели инструментов или же привычнымвыбором команды меню; чтобы при открытииприложения пользователь видел на экране не окноБаза данных (Database), наполненноемножеством таблиц, запросов, форм и отчетов, анекую понятную форму, с помощью которой можнобыло бы сразу производить желаемые действия ит. д.С помощью макросов можно создать удобные

меню и панели инструментов для приложения.

Page 16: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 16

4.3 Недостатки использования макросов Однако использование макросов имеет и

некоторые недостатки: Возможности макрокоманд ограничены посравнению с возможностями языка VBA, поэтому вряде случаев без программирования на VBA необойтись. Язык VBA предоставляет более широкиевозможности для работы с данными, позволяетиспользовать механизм программированияобъектов для связи с другими приложениями,вызывать функции из библиотек динамическойзагрузки (DLL) Windows и создавать собственныеспециализированные функции.

Page 17: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 17

4.3 Недостатки использования макросов

Макросы можно использовать практически везде, гдеприменяются процедуры VBA , однако процедуры VBA ,как правило, выполняются быстрее. Макросы являются объектами, существующимиотдельно от форм и отчетов, в которых они используются,поэтому, когда этих объектов становится очень много, ихподдержка достаточно трудоемка. Процедуры обработкисобытий VBA являются неотъемлемой частью форм иотчетов, и в этом есть свои преимущества. Например, припереносе форм и отчетов из одной базы данных в другуюс ними автоматически переносятся связанные процедуры.

Page 18: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 18

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

В Microsoft Access существуетспециальное средство для созданиямакросов — Конструктор макросов(Macro Design). Рассмотрим процесссоздания макроса с помощьюКонструктора.

Page 19: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 19

5.1 Конструктор макросов Открыть окно Конструктор макросов (Macro

Design) для создания нового макроса можно двумяспособами:1. Раскройте список макросов в окне Базаданных (Database), щелкнув левой кнопкоймыши по ярлыку Макросы (Macros), и нажмитекнопку Создать (New) в верхней части окна.2.Щёлкните по стрелке вниз на кнопке Новыйобъект (New Object) на панели инструментовБаза данных (Database) и выберите элементМакрос (Macros).

Page 20: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 20

5.1 Конструктор макросов

Окно Конструкторамакросов построеноаналогично окнуКонструктора таблиц,т. е. разделено погоризонтали на двечасти: панельописаний и панельаргументов.

Для быстрого переключениямежду панелями описаний иаргументов, так же как при работе стаблицами и запросами в режимеКонструктора, можно использоватьклавишу <F6>.

Page 21: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 21

5.2 Окно Конструктора

Верхняя часть окна Конструктора — панельописаний — состоит из нескольких столбцов. Поумолчанию на этой панели выводится два столбца:"Макрокоманда" (Action) и "Примечание"(Comments). Панель описаний позволяет определитьпоследовательность макрокоманд, из которых состоитмакрос. Строка в столбце "Макрокоманда" (Action)представляет собой поле со списком, в котором можновыбрать нужную макрокоманду. Строка в столбце "Примечание" (Comments) —это обычное текстовое поле, в которое можно ввестикомментарий, описывающий выполняемое действие.

Page 22: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 22

5.3 Панель аргументов

Когда поле "Макрокоманда" (Action)заполнено, в нижней части окнаКонструктора макросов появляется панельаргументов, предназначенная для вводазначений аргументов соответствующеймакрокоманды. Список полей на этойпанели зависит от выбранной макрокомандыи может отсутствовать, если макрокоманда неимеет аргументов. Таким образом, присоздании макросов не нужно запоминатьсписок аргументов для каждой макрокоманды.

Page 23: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 23

5.4 Простой способ ввода макрокомандыДопустим, нужно создать макрос, который должен

открывать форму "Клиенты" (Customers) вприложении "Борей" (Northwind). Для этого в окнеБаза данных (Database) необходимо щелкнуть поярлыку Формы (Forms), затем, открыть окноКонструктор макросов (Macro Design) и перетащитьс помощью мыши форму "Клиенты" (Customers) вполе "Макрокоманда" (Action) окна Конструкторамакросов.

Для удобства перетаскивания объектов из окна База данных (Database) в формувыберите команду Окно, Слева направо (Window, Tile Vertically), чтобы расположитьокна на экране рядом.

Page 24: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 24

Перетаскивание – способ создания макроса

Page 25: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 25

5.4.1 Перетаскивание –способ создания макросаТогда в поле "Макрокоманда" (Action)

автоматически появится макрокомандаОткрытьФорму (OpenForm), а на панелиаргументов автоматически заполнятся поля: в поле"Имя формы" (Form Name) появится имя формы"Клиенты" (Customers), в поле "Режим" (View) —значение по умолчанию Форма (Form), в поле"Режим окна" (Window Mode) — значениеОбычное (Normal). Остальные поля останутсяпустыми. Мы можем в этой же макрокомандезадать фильтр для отбора записей. Для этоговведем в поле "Имя фильтра" (Filter Name) имякакого-нибудь фильтра, построенного ранее.

Page 26: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 26

5.4.2 Перетаскивание –способ создания макросаКроме того, можно сделать записи в этой форме

недоступными для изменений, для чего в полеРежим данных (Data Mode) необходимо ввестизначение Только чтение (Read Only). Аналогичноможно создавать макрокоманды, перетаскивая изокна База данных (Database) таблицы, запросы,отчеты и другие макросы. При этом в окнеКонструктора макросов будут появлятьсясоответствующие макрокоманды:ОткрытьТаблицу (ОрепТаblе),ОткрытьЗапрос (OpenQuery) , ОткрытьОтчет(OpenReport), ЗапускМакроса(RunMacro).

Page 27: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 27

5.4.3 Ввод аргументов

Для ввода аргументов макрокоманды чаще всего требуется выбирать значения из списков или вводить выражения. Для ввода выражений можно воспользоваться Построителем выражений, кнопка которого находится справа от поля аргумента. Как и в других случаях, перед выражением нужно ставить знак равенства (=). Исключения составляют аргумент Выражение (Expression) макрокоманды ЗадатьЗначение (Setvalue) и аргумент Число повторений (Repeat Count) макрокоманды -ЗапускМакроса (RunMacro). Если ввести знак равенства перед выражением, задающим значение этих аргументов, то оно будет вычисляться дважды, что может привести к нежелательным результатам.

Page 28: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 28

6. Создание групп макросов При разработке приложения с использованием

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

Page 29: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 29

6.1 Создание групп макросовЧтобы создать группу макросов:

1.Откройте Конструктор макросов одним изтех способов, которые были описаны впредыдущем разделе.2.Нажмите кнопку Имена макросов(Macro Name) на панели инструментов. Напанели описаний в окне Конструкторапоявится еще один столбец — "Имямакроса" (Macro Name)

Page 30: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 30

6.2 Создание групп макросов

3.В этот столбец введите имя первого макроса.Остальные поля данной строки лучше оставитьпустыми — это облегчит перемещение икопирование макрокоманд.

4.Начиная со следующей строки, введите всемакрокоманды макроса и соответствующиеаргументы для каждой макрокоманды.

5.Пропустите одну строку.6.Повторите шаги 3—5 для каждого макроса.

Page 31: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 31

6.3 Создание групп макросов

Page 32: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 32

6.4 Создание групп макросовПри обработке макроса пустые строки

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

используется полное имя для ссылки намакрос. Полное имя макроса формируетсятаким образом: имяГруппы.имяМакроса.

Page 33: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 33

7. Применение условий в макросах В примерах макросов, которые приводились

ранее, использовался последовательный порядоквыполнения макрокоманд.Однако, как и в любой программе, порядок

выполнения макрокоманд в макросе может бытьизменен. Для этого вводятся условия выполненияили пропуска макрокоманд. Эти условия задаютсяв виде выражений в специальном столбце,который появляется в окне Конструкторамакросов, если нажата кнопка Условия(Conditions) на панели инструментов.

Page 34: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 34

7.1 Применение условий в макросах

Как и в случае сгруппами макросов,можно настроитьпараметры системытаким образом,чтобы этот столбецпоявлялся вКонструкторемакросов всегда.

Page 35: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 35

7.2 Применение условий в макросахНа рисунке приведено окно Конструктора для

группы макросов "Наклейки для клиентов"(Customer Label Dialog), используемой для печатиотчета в виде наклеек на конверты. Причем можнонапечатать наклейки сразу для всех клиентов илидля клиентов одной страны, выбранной из списка.В окне виден столбец "Условие" (Condition). Еслиусловие, заданное в этом столбце, истинно,выполняется макрокоманда, находящаяся в этойстроке. Если условие ложно, соответствующаямакрокоманда пропускается и выполняетсяследующая.

Page 36: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 36

7.3 Применение условий в макросахЕсли требуется при истинности условия выполнить

сразу несколько макрокоманд, то для всехмакрокоманд, кроме первой, в столбце "Условие"(Condition) ставится многоточие (...). Условие, котороедолжно проверяться, пишется в строке первоймакрокоманды. Тогда, если оно истинно, выполняетсявесь набор макрокоманд от этого условия и доследующей макрокоманды с заданным условием, доследующего макроса или до конца макроса. Еслиусловие ложно, пропускаются все команды,помеченные многоточием, включая макрокоманду сзаданным условием. Далее выполняется макрокоманда,следующая за пропущенными, в которой содержитсяновое условие или поле "Условие" (Condition) незаполнено.

Page 37: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 37

7.4 Применение условий в макросахТаким образом, в отличие от большинства

языков программирования, в макросах нетальтернативного ветвления. Для того чтобысоздать макрос с двумя альтернативными ветвями,нужно сначала ввести условие и определитьмакрокоманды, исполняемые при выполненииэтого условия. Сразу после них необходимоуказать обратное условие и определитьмакрокоманды, исполняемые в альтернативнойветви. Затем можно ввести макрокоманды,которые исполняются безусловно.

Page 38: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 38

8. Выполнение и отладка макросов Способов запуска макросов очень много.

Среди них есть прямые способы, когдамакрос запускается непосредственнопользователем. Эти способы используютсяобычно при тестировании макросов. Когдамакрос отлажен, создают специальнуюкоманду меню или кнопку на панелиинструментов или связывают макрос скаким-либо событием в форме или отчете.

Page 39: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 39

8.1 Выполнение и отладка макросов

Универсальнымспособом запускамакроса являетсяиспользованиекоманды менюСервис, Макрос,Выполнитьмакрос (Tools,Macro, Run Macro).

Page 40: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 40

8.2 Выполнение и отладка макросовВ появившемся при выборе этой команды

диалоговом окне нужно указать (ввести иливыбрать из списка) полное имя макроса, т. е.имяГруппы.имяМакроса. Этот способ позволяетвыполнить макрос из любого активного окна, будьто окно макросов, окно базы данных или,например, Конструктор форм.

Page 41: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 41

8.3. Запуск макроса из окна базы данных Чтобы запустить макрос из окна База данных

(Database), щелкните по ярлыку Макросы(Macros) на панели объектов, найдите в спискенужный макрос и дважды щелкните по немукнопкой мыши или нажмите кнопку Запуск (Run)на панели инструментов окна База данных.Последний способ подходит, только если ввыбранном объекте содержится один макрос. Впротивном случае нужно воспользоватьсяуниверсальным способом выполнения макроса,описанным выше.

Page 42: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 42

8.4 Запуск макроса с помощью кнопки на панели инструментов Прямые способы запуска макросов являются

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

Page 43: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 43

8.5.1 Запуск макроса с помощью кнопки на панели инструментовЧтобы добавить кнопку на стандартную панель

инструментов Access:1. Щелкните правой кнопкой мыши по панелиинструментов и выберите в контекстном менюкоманду Настройка (Customize).2. В появившемся диалоговом окне Настройка(Customize) раскройте вкладку Панелиинструментов (Toolbars).3. Установите флажок для одной из стандартныхпанелей инструментов, например Запрос врежиме таблицы (Query Datasheet), чтобы онаотобразилась на экране.

Page 44: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 44

8.5.2 Запуск макроса с помощью кнопки на панели инструментов4. Закройте диалоговое окно Настройка(Customize), нажав кнопку Закрыть (Close).5.Щелкните по ярлыку Макросы (Macros)на панели объектов в окне База данных(Database) и найдите нужный макрос.6.Перетащите макрос с помощью мыши напанель инструментов Запрос в режиметаблицы (Query Datasheet).

Page 45: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 45

8.5.3 Создание специальной панели инструментов Теперь рассмотрим создание специальной

панели инструментов и размещение на ней кнопкивызова макроса.Щелкните по ярлыку Макросы (Macros) на

панели объектов в окне База данных (Database)и выделите нужный макрос.Выберите команду Сервис, Макрос, Создать

панель инструментов из макроса (Tools, Macro,Create Toolbar from Macro). На экране появляетсяпустая панель инструментов.Перетащите с помощью мыши нужный макрос на

эту панель.

Page 46: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 46

8.5.4 Создание специальной панели инструментовНа панели появляется кнопка с уже знакомым

значком макроса. Кнопка получает такое же название,как имя макроса, для которого она создана.Если нужно создать панель инструментов для

вызова нескольких макросов, мы рекомендуемобъединить эти макросы в одну группу (созданиегруппы макросов было описано в предыдущемразделе). Тогда при выполнении команды менюСервис, Макрос, Создать панель инструментовиз макроса (Tools, Macro, Create Toolbar from Macro)будет создана панель инструментов, на которойкаждому макросу группы будет соответствовать своякнопка.

Page 47: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 47

8.5.5 Создание специальной панели инструментовПри этом на кнопках отображаются

имена соответствующих макросов. Новаяпанель инструментов получает такое жеимя, как имя группы макросов. Попробуйтевыполнить эту команду для одной из группмакросов в базе данных "Борей"(Northwind), например "Клиенты"(Customers). При желании можно заменитьтекст на кнопках значками.

Page 48: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 48

8.6 Запуск макроса с помощью команды менюЕще одним распространенным способом

запуска макроса является запуск спомощью специально созданной для этогокоманды меню. Способы создания командменю для запуска макросов очень похожина те, что применяются для созданиякнопок на панели инструментов. Например,можно воспользоваться для этого командойменю Сервис, Макрос, Создать меню измакроса (Tools, Macro, Create Menu fromMacro).

Page 49: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 49

8.7 Запуск макроса с помощью комбинации клавиш Для запуска макроса можно назначить

комбинацию клавиш. Для этого необходимосоздать специальную группу макросов —"AutoKeys". Эта группа макросов должнадля каждой назначенной вами комбинацииклавиш содержать макрокоманду запускасоответствующего макроса. Пример группымакросов "AutoKeys" приведен в базеданных "Борей". Откройте эту группумакросов в режиме Конструктора. Онасодержит один макрос.

Page 50: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 50

8.7 Запуск макроса с помощью комбинации клавиш

Page 51: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 51

8.7.1 Запуск макроса с помощью комбинации клавиш

«Имя макроса» — это запись комбинацииклавиш <Ctrl>+<P>. Сам макрос состоит изодной макрокоманды ЗапускМакроса (RunMacro),которая запускает макрос "Телефоны клиентов.Печать" (Customer Phone List.Print). Макрос"AutoKeys" просматривается каждый раз, когдапользователь вводит специальные комбинацииклавиш, например <Ctrl>+<P>. Если введеннаякомбинация клавиш найдена в "AutoKeys", тозапускается соответствующий макрос.

Page 52: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 52

8.7.2 Запуск макроса с помощью комбинации клавишЭтот способ запуска макроса, безусловно,

является самым быстрым, однако он имеетсущественный недостаток: свободных комбинацийклавиш очень немного. И хотя комбинации,определенные в "AutoKeys", имеют более высокийприоритет, чем стандартные (например,<Ctrl>+<C> — копировать), заменять стандартноеназначение комбинаций клавиш не рекомендуется.Разрешенные комбинации клавиш приведены внижеследующей таблице. Комбинации с клавишей<Alt> в данном случае не применяются, т. к.используются для запуска команд меню и нажатиякнопок.

Page 53: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 53

8.7.2 Запуск макроса с помощью комбинации клавиш

Обозначение Комбинации клавиш

^А или ^4 <Ctrl> + буква или <Ctrl> + цифра

{F1} Любая функциональная клавиша

^{F1} <Ctrl> + любая функциональная клавиша

Page 54: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 54

8.7.2 Запуск макроса с помощью комбинации клавиш

Обозначение Комбинации клавиш

+ {F1} <Shift> + любая функциональная клавиша

{Insert} <Ins>^{Insert} <Ctrl> + <Ins>+{Insert} <Shift> + <Ins>

Page 55: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 55

8.7.2 Запуск макроса с помощью комбинации клавиш

Обозначение Комбинации клавиш

{Delete} или {Del}

<Del>

^{ Delete} или ^{Dе1}

<Ctrl> + <Del>

+{ Delete} или +{Del}

<Shift> + <Del>

Page 56: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 56

8.8. Запуск макроса при открытии базы данныхПри открытии базы данных Microsoft Access могут

выполняться некоторые действия. Чаще всего этооткрытие специальной формы, так называемой Главнойкнопочной формы, вывод специальных меню илипанелей инструментов, скрытие стандартных меню и т.д. Для определения этих действий используетсядиалоговое окно Параметры запуска (Startup).Однако иногда требуется при запуске приложениявыполнить более сложный набор действий, чем тот, чтопозволяет задать это диалоговое окно. Например,может потребоваться заранее открыть несколько форм(не показывая их на экране), чтобы потом ихотображение не занимало много времени, проверитьнекоторые условия или запросить ввод некоторыхданных.

Page 57: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 57

8.8.1 Запуск макроса при открытии базы данныхВсе это можно сделать с помощью

специального макроса, который называется"AutoExec". При открытии базы данныхAccess проверяет наличие этого макроса и,если он существует, выполняет его. Присоздании макроса "AutoExec" следуетпомнить, что Access сначала выполнитдействия, определенные в окнеПараметры запуска (Startup), а затем —макрос "AutoExec", поэтому в них недолжно быть противоречивых действий.

Page 58: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 58

8.9 Запуск макроса из другого макроса Иногда требуется вызвать макрос из другого

макроса. Это можно сделать с помощью макрокомандыЗапускМакроса (RunMacro). Мы уже встречались сэтой макрокомандой при описании макроса"AutoKeys". Здесь нужно отметить, что этамакрокоманда имеет три аргумента: кроме именимакроса, задается число повторов выполнениямакрокоманды и условие повтора. Таким образом, этамакрокоманда позволяет организовывать циклы.Аргумент Число повторов (Repeat Count) задаетколичество вызовов макроса. Аргумент Условиеповтора (Repeat Expression) является выражением,которое может принимать значение Истина илиЛожь.

Page 59: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 59

8.9.1 Запуск макроса из другого макросаПеред выполнением макрокоманды

ЗапускМакроса (RunMacro) проверяется значениеэтого выражения. Если оно Истина, то макросвыполняется, если Ложь, то макрос не выполняетсяи управление передается следующей макрокоманде.Если эти два аргумента не заданы, макросвыполняется только один раз. Если заданы оба этиаргумента, цикл вызова прекращается, когда макросвыполнился заданное число раз либо когда заданноеусловие окажется невыполненным и получитзначение Ложь.

Page 60: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 60

8.10 Назначение макроса событиюНаиболее часто макросы используются в

приложении Access для обработки событий.Событие — это любое действие, распознаваемоеобъектом, и можно определить реакцию объектана событие. События происходят в результатедействий пользователя, выполнения инструкцийVBA или генерируются системой. Примеромсобытий является вывод на экран формы, отчета,ввод данных в текстовое поле, нажатие кнопкимыши или клавиши. Каждому из этих событийможно назначить макрос или процедуру VBA ,которые будут автоматически выполняться в ответна произошедшее событие.

Page 61: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 61

8.10.1 Назначение макроса событиюПрактически все программирование в Access

сводится к написанию макросов или процедур, обрабатывающих события, т. е. программируется реакция объектов на события. Существует большое количество различного рода событий, на которые реагируют объекты, причем часто возникает не одно, а целая последовательность событий. Поэтому необходимо обладать определенным умением, чтобы решить, какому событию следует назначить созданный вами макрос или процедуру VBA. Рассмотрим способ назначения макроса событию и приведем примеры обработки событий с помощью макросов.

Page 62: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 62

8.10.2 Назначение макроса событиюВначале откроем форму "Клиенты" (Customers) в

базе данных "Борей". В этой форме отображаетсяинформация о клиенте. Допустим, мы хотели бывидеть не только эту информацию, но и данные окупленных клиентом продуктах. Было бы хорошосоздать кнопку Заказы клиента, при нажатиикоторой появлялась бы форма "Заказы" (Orders) сзаказами только того клиента, который в данныймомент выбран в форме "Клиенты" (Customers). Длятого чтобы получить желаемое, создадим макрос,который будет выполняться, когда произойдетсобытие Нажатие кнопки (On Click) в форме"Клиенты" (Customers).

Page 63: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 63

8.10.3 Назначение макроса событиюЧтобы создать макрос, определяющий

описанную реакцию приложения на событиеНажатие кнопки (On Click):1. Откройте форму "Клиенты" (Customers) врежиме Конструктора.2. Создайте кнопку в области заголовка формы.При этом кнопка мастера на панели элементовдолжна быть отжата, т. к. в противном случае вамбудет предложено создать процедуру обработкисобытий, а не макрос.3. Откройте окно свойств только что созданнойкнопки, если оно еще не открыто, и раскройтевкладку События (Event).

Page 64: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 64

8.10.4 Назначение макроса событию4. Помимо обычного нажатия (Click), которое будемиспользовать, в набор событий кнопки входят:получение и потеря фокуса, двойной щелчоккнопкой мыши, простое перемещениеуказателя мыши над кнопкой и пр.Теперь найдите в списке событие Нажатие

кнопки (On Click) и установите курсор всоответствующую ячейку. Это поле со списком, и вданный момент оно пустое. Если открыть этот список,то первым его элементом будет [Процедураобработки событий] ([Event procedure]), а далееидет перечень всех макросов, существующих вприложении.

Page 65: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 65

8.10.5 Назначение макроса событию

Page 66: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 66

8.10.6 Назначение макроса событию5.Для создания макроса нажмите кнопкуПостроителя, находящуюся справа отполя. Появится окно Построитель (ChooseBuilder), в котором предлагается выбратьодин из трех Построителей: Выражения(Expression Builder), Макросы (MacroBuilder) и Программы (Code Builder).6.Выберите Макросы (Macro Builder) инажмите кнопку ОК. Откроется «окномакросов» и диалоговое окно, в котороенужно ввести имя создаваемого макроса.

Page 67: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 67

8.10.7 Назначение макроса событию

В макрос нужно добавить единственную макрокоманду ОткрытьФорму(OpenForm). Значения аргументов этой макрокоманды приведены ниже в таблице.

Page 68: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 68

8.10.8 Назначение макроса событиюЗначения аргументов макрокоманды

ОткрытьФорму (OpenForm) :

Аргумент ЗначениеИмя формы (Form

Name)Заказы (Orders)

Режим (View) Форма (Form)Условие отбора (Condition) [КодКлиента] = [Forms] !

[Клиенты] ! [КодКлиента]Режим данных (Data Mode) Только чтение (Read Only)Режим окна (Window Mode) Обычное (Normal)

Page 69: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 69

8.10.9 Назначение макроса событиюАргумент Режим (View) определяет режим, в

котором форма должна быть открыта. Он можетпринимать значения: Форма (Form), Конструктор(Design), Просмотр (Print Preview), Таблица(Datasheet), Сводная таблица (PivotTable) иСводная диаграмма (Pivot Chart). АргументУсловие отбора (Condition) определяет условие дляотбора записей, отображаемых в форме. Условиепредставляет собой выражение. В данном случае этовыражение содержит ссылку на элемент управленияв форме, что позволяет выбрать все записи изтаблицы, в которых поле имеет значение равноезначению, заданному в элементе управления формы.

Page 70: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 70

8.10.10 Назначение макроса событиюАргумент Режим данных (Data Mode)

определяет способ работы с данными иможет принимать одно из значений:Добавление (Add), Изменение (Edit) илиТолько чтение (Read Only). И наконец,аргумент Режим окна (Window Mode)определяет тип окна: Обычное (Normal),Невидимое (Hidden), Значок (Icon) иОкно диалога (Dialog).

Page 71: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 71

8.10.11 Назначение макроса событию8.Закройте окно макроса, сохранивизменения. В окне свойств кнопки в полеНажатие кнопки (On Click) появится имямакроса.9.Раскройте вкладку Макет (Format) ивведите в поле Подпись (Caption)название кнопки. То же самое имярекомендуется ввести в поле Имя (Name)на вкладке Другие (Other).

Page 72: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 72

8.10.12 Назначение макроса событию

Page 73: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 73

8.11. Вызов макроса из процедуры VBA

Процедуры VBA и макросы в Access являются объектамиблизкими и часто взаимозаменяемыми, т. е. вместо макросаможно использовать процедуру VBA и наоборот.Существуют способы запуска макроса из процедуры VBA,запуска процедуры VBA из макроса, кроме того, Accessпозволяет преобразовать макрос в процедуру VBA.Для запуска процедуры VBA из макроса существует

специальная макрокоманда ЗапускПрограммы(RunСоdе).Эта макрокоманда имеет один аргумент — имя вызываемойпроцедуры, хотя вызываться может только функция, а неподпрограмма применяется специальный методЗапускМакроса (RunMacro) объекта DoCmd, например:

DoCmd.RunMacro "Макрос!".

Page 74: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 74

8.11.1 Вызов макроса из процедуры VBAОбъект DoCmd используется в процедуре VBA

для выполнения макрокоманд Access. При этом английское имя нужной макрокоманды должно быть указано в качестве Метода объекта DoCmd, например строка процедуры

DoCmd.OpenForm "Клиенты"позволяет открыть форму "Клиенты". Здесь "Клиенты"— аргумент макрокоманды. Аргументы перечисляются в предложении DoCmd через запятую. Таким способом может быть выполнено большинство макрокоманд.

Page 75: MS Access. Макросы · 12.04.2013 доц. Шкалето В.И.1 MS Access. Макросы Лекции по дисциплине «Основы программирования

12.04.2013 доц. Шкалето В.И. 75

Источники дополнительных сведений На сайте Realcoding.net:Статьи:: Базы данных :: Учебник по

Access 2002 :: Глава 11. Работа с макросами. Проектирование баз данных. СУБД Microsoft Access: Учебное пособие для вузов / Н. Н. Гринченко, Е. В. Гусев, Н. П. Макаров., А. Н. Пылькин, Н. И. Цуканова. -М.: Горячая линия -Телеком, 2004, 240с.