Лабораторная работа № 5 Работа с макросами в среде MS ACCESS

Цель работы: Cоздание различных типов макросов и их применение для изменения состояния объектов, значений полей и других элементов управления. Использование макросов для управления порядком выполнения приложения.

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

Примеры простых ссылок:

-  Forms! [Имя Формы] - ссылка на форму

-  Reports![Имя Отчета] - ссылка на отчет

-  Forms! [Имя Формы] [Имя Поля] - ссылка на поле формы

-  Tables![Имя Таблицы][Имя Поля]- ссылка на поле таблицы

-  Forms! [Имя Формы]! [Имя Подчиненной Формы] [Имя Поля] - ссылка на поле подчиненной формы

Ссылки можно создавать при помощи Построителя выражений.

Различаются следующие типы макросов

1. Линейные (простые) – последовательность макрокоманд.

2. Групповые – последовательность простых макросов. Каждый простой макрос внутри группового должен иметь своё имя.

3. Условные – позволяют организовать выполнение макрокоманд или других макросов в зависимости от результата проверки условия.

4.  Циклические – позволяют организовать многократное выполнение группы макрокоманд.

1. ЛИНЕЙНЫЕ МАКРОСЫ

1.1. ПЕЧАТЬ БЛАНКА ДОГОВОРА ИЗ ФОРМЫ СДЕЛКИ

НЕ нашли? Не то? Что вы ищете?

Создать макрос, открывающий отчёт "Договор для печати" при нажатии кнопки Печать договора в форме Сделки по договорам.

1.1.1 В окне конструктора макросов создать следующий макрос.

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

Аргументы

Открыть отчет

Имя отчета

Бланк договора

Режим

Просмотр

Условия отбора

[Формы]![Сделки по договорам]![НомерДог] =[НомерДог]

Режим окна

Обычное

1.1.2 Сохранить макрос под именем Печать

1.1.3. Открыть форму Сделки по договорам в режиме конструктора, отключить на панели элементов копку Мастера и создать в разделе примечания формы кнопку : имя - Печать, подпись - Печать договора

1.1.4. Открыть свойства кнопки -> вкладка События -> свойство Нажатие кнопки -> выбрать из раскрывающегося списка макрос Печать.

1.1.5. Вернуться к форме Сделки по договорам и проверить работу созданной кнопки.

2. ГРУППОВЫЕ МАКРОСЫ.

Для решения однотипных задач, например, открытие/закрытие таблиц, форм или отчетов, а также исполнение запросов рекомендуется создавать групповые макросы. Для создания группового макроса необходим третий столбец Имя макроса, который можно открыть из меню: Вид - Имена макросов или соответствующей кнопкой на панели инструментов конструктора макросов. В этом столбце задаются имена простых макросов, входящих в состав группового. Каждому групповому макросу при его сохранении дается имя. Каждому простому макросу, входящему в состав группового, также дается имя. Ссылка на простой макрос внутри группового дается в виде:

<имя группового макроса>.<имя простого макроса>

2.1. СОЗДАТЬ ГРУППОВОЙ МАКРОС, ВЫПОЛНЯЕМЫЙ ПРИ УВОЛЬНЕНИИ СОТРУДНИКА И ПРИ ПРИЁМЕ НОВОГО СОТРУДНИКА В ШТАТ

2.11. Создать в форме Сотрудник две кнопки: ПрШтат (подпись – оформить) и Уволить

2.1.2. В режиме конструктора выделить форму, открыть окно свойств –> Данные –> кнопка "…" и добавить поле Вакансии из таблицы Должности

2.1.3. Перейти на вкладку Макросы и создать макрос "Кнопки принять уволить". Данный макрос открывает форму сотрудники и устанавливает видимость кнопок принять/уволить, в зависимости от выполняемой операции.

Имя макроса

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

Аргументы

Прием

ОткрытьФорму

Имя формы

Сотрудники

Режим

Форма

Режим данных

Добавление

Режим окна

обычное

ЗадатьЗначение

Элемент

[Forms]![Сотрудники]![Уволить].[Visible]

Значение

ложь

Уволить

ОткрытьФорму

Имя формы

Сотрудники

Режим

Форма

Режим данных

Изменение

Режим окна

обычное

ЗадатьЗначение

Элемент

[Forms]![Сотрудники]![ПрШтат].[Visible]

Значение

Ложь

2.1.4. Сохранить макрос

2.1.5. Созданный макрос будет запускаться из главной кнопочной формы.

2.1.6. Перейти на вкладку Макросы и создать макрос "Прием_увольнение". Данный макрос при оформлении/увольнении сотрудника изменяет количество вакансий.

Имя макроса

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

Аргументы

Прием а штат

ЗадатьЗначение

Элемент

[Forms]![Сотрудники]![Вакансии]

Значение

[Forms]![Сотрудники]![Вакансии]-1

Обновление

Без аргументов

Уволить

ЗадатьЗначение

Элемент

[Forms]![Сотрудники]![Вакансии]

Значение

[Forms]![Сотрудники]![Вакансии]+1

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

Команда

УдалитьЗапись

Обновление

Без аргументов

2.1.7. Сохранить макрос.

2.1.8.  Переключиться на форму Сотрудники и присвоить кнопкам ПрШтат и Уволить созданные макросы. Перейти в режим формы и проверить работу кнопок.

3. ОРГАНИЗАЦИЯ ПОИСКА С ПОМОЩЬЮ МАКРОСОВ

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

3.1.1.  Создать ленточную форму Поиск по договорам на основе запроса Сделки для форм и отчетов (все поля). Добавить вычисляемое поле – Стоимость. Выражение для вычисления =[Цена]*[КолСлов] .

3.1.2.  Разместить в разделе заголовка формы элементы управления, с помощью которых задаются условия отбора и запуск соответствующего макроса. Вид создаваемой формы с отобранными записями представлен ниже.

3.1.3.  Создать (без мастера) поле со списком - Номер договора на основе инструкции SQL, как показано на рисунке. Задайте имя –Пдог

3.1.4  Создать вручную (без мастера) поле со списком - Заказчик (Имя – ПЗак ),

Принял ( Имя – Псотр) и Исполнитель (Имя – ПИсп).

3.1.5  Создать с помощью мастера группу переключателей Срочность для поиска срочных договоров и присвоить ей имя – Псроч.

3.1.6  Аналогично создать с помощью мастера группу переключателей Состояние работы для поиска выполненных договоров и присвоить ей имя – ПВып.

3.1.7  Создать кнопки КнДог, КнЗак, КнСотр, КнИсп, КнВсеДог, КнВып (мастера отключены).

3.1.8  Перейти на вкладку макросы и создать групповой макрос поиск_договор.

Имя макроса

Условие

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

Аргументы

Договор

Открыть

Форму

Имя формы

Поиск по сделкам

Режим

форма

Условие отбора

[НомерДог]=[Формы]![Поиск по сделкам]![ПДог]

Режим данных

Режим окна

обычное

Заказчик

Открыть

Форму

Имя формы

Поиск по сделкам

Режим

форма

Условие отбора

[Заказчик]=[Формы]![Поиск по сделкам]![ПЗак]

Режим данных

Режим окна

обычное

Срочность

[Формы]![Поиск по сделкам]![ПСроч]=1

Открыть

Форму

Имя формы

Поиск по сделкам

Режим

форма

Условие отбора

[Срочность]=Истина

Режим данных

Режим окна

обычное

[Формы]![Поиск по сделкам]![ПСроч]=2

Открыть

Форму

Имя формы

Поиск по сделкам

Режим

форма

Условие отбора

[Срочность]=Ложь

Режим данных

Режим окна

обычное

Выполнен

Дни рождения

Формы]![Поиск по сделкам]![ПВып]=1

ОткрытьФорму

Имя формы

Поиск по сделкам

Режим

форма

Условие отбора

[ДатаВып] Is Not Null

Режим данных

Режим окна

обычное

[Формы]![Поиск по сделкам]![ПВып]=2

ОткрытьФорму

Имя формы

Поиск по сделкам

Режим

форма

Условие отбора

[ДатаВып] Is Null

Режим данных

Режим окна

обычное

3.1.9. Создать макрос, отображающий все записи.

Имя макроса - Все записи

макрокоманда – ПоказатьВсеЗаписи.

3.1.10  ереключиться на форму Поиск по сделкам и присвоить ранее созданным кнопкам следующие макросы.:

3.1.10КнДог - поиск_договор. Договор,

3.1.10КнПринял - поиск_договор. Принял,

3.1.10КнИсп - поиск_договор. Исполнитель,

3.1.10КнЗак - поиск_договор. Заказчик

КнВсе - Все записи.

3.1.11 Для элементов управления группа переключателей открыть свойства и событию - после обновления присвоить макросы поиск_договор. Срочность и поиск_договор. Выполнен

3.1.12. Проверить работу макросов.

4. УСЛОВНЫЕ МАКРОСЫ

Разветвляющиеся вычислительные процессы бывают двух видов: односторонние и двусторонние. В односторонних процессах вычисления определены только в одной ветви, а в двусторонних - в обеих ветвях. Соответственно в макросах с односторонним ветвлением определен набор макрокоманд только в одной ветви, а с двусторонним ветвлением - в обеих ветвях. Ветвление осуществляется в зависимости от значения некоторого условия, которое может быть истинно или ложно. Поэтому при конструировании макроса с ветвлением используется столбец условий для записи условия ветвления. Макросы, исполняемые в одной ветви, обозначаются троеточием в столбце условий. Добавление столбца условий осуществляется через меню Вид - условия

4.1. СОЗДАТЬ МАКРОС, ВЫЧИСЛЯЮЩИЙ НАЦЕНКУ ЗА СРОЧНОСТЬ ВЫПОЛНЕНИЯ ПЕРЕВОДА.

4.1.1. Открыть форму Сделки по договорам в режиме конструктора и задать выделенным элементам управления следующие имена: полям - НадСрочность и ОбщаяСтоимость и кнопке - ВычСт

4.1.2. Создать следующий макрос

Условие

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

Аргументы

[Формы]![Сделки по договорам]![Срочность]<>0

Задать значение

Элемент

[Формы]![Сделки по договорам]![НадСрочность]

Выражение

[Формы]![Сделки по договорам]![стоимость]*0,25

Задать значение

Элемент

[Формы]![Сделки по договорам]![ОбщаяСтоимость]

Выражение

[Формы]![Сделки по договорам]![НадСрочность]+

[Формы]![Сделки по договорам]![стоимость]

[Формы]![Сделки по договорам]![Срочность]=0

Задать значение

Элемент

[Формы]![Сделки по договорам]![НадСрочность]

Выражение

0

Задать значение

Элемент

[Формы]![Сделки по договорам]![ОбщаяСтоимость]

Выражение

[Формы]![Сделки по договорам]![стоимость]

4.1.3.  Сохранить макрос, присвоив ему имя наценка

4.1.4. Назначить событию кнопки ВычСт - -нажатие кнопки, созданный макрос

4.1.5. Перейти в режим формы и оформить несколько договоров, указав срочность перевода и нет. Проверить работу макроса.

4.1.6. Открыть свойства формы Сделки по договорам и событию открытие формы назначить макрос наценка.

4.2. СОЗДАТЬ МАКРОС ПАРОЛЬ, ОТКРЫВАЮЩИЙ ФОРМУ ТИП КЛИЕНТА ПРИ ОФОРМЛЕНИИ ДОГОВОРА.

4.2.1. В режиме конструктора создать форму пароль без источника данных.

4.2.2. Создать поле - пароль, поле - счет и отключив мастера кнопку - ОК. Поле счет используется для подсчета количества ошибочного ввода пароля. Открыть свойства поля счет и присвоить ему имя - счет и значение по умолчанию - 3 (три), вывод на экран – нет. Присвоить полю пароль имя - пароль, а кнопке имя - ОК. Сохранить форму, присвоив имя пароль.

4.2.3. Перейти к макросам и создать макрос "пароль открыть", открывающий форму Тип клиента

4.2.4. Сохранить макрос.

4.2.5. Создать макрос - ПАРОЛЬ, проверяющий правильность ввода пароля.

Условие

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

Аргументы

[Forms]![пароль]![пароль] <> "gfhjkm"

Сообщение

Сообщение

ОШИБКА ПАРОЛЯ

ПОВТОРИТЕ ВВОД

Сигнал

Да

Тип

Отсутствует

Задать значение

Элемент

[счет]

Выражениe

[счет]-1

Задать значение

Элемент

[пароль]

Выражение

“ ”

КЭлементу

Управления

Имя элемента

ПАРОЛЬ

( Forms![пароль]![пароль] <> "gfhjkm" ) And ( Forms![пароль]![счет] = 0 )

Сообщение

Сообщение

НЕТ ДОСТУПА

Сигнал

Да

Тип

Отсутствует

Закрыть

Тип объекта

Форма

Имя объекта

пароль

Сохранение

подсказка

ОстановитьМакрос

Без аргументов

Forms![пароль]![пароль] = "gfhjkm"

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

Имя макроса

Пароль открыть

Число повторов

Без аргумента

Условие повтора

4.2.6. Перейти к форме пароль и присвоить созданный макрос пароль событию кнопки ОК нажатие кнопки. Проверить работу макроса.