Использование условий в макросе
Условия позволяют определить порядок передачи управления между макрокомандами в макросе и обеспечивают выполнение определенных ветвей алгоритма. Условие вводится в строку макрокоманды в столбец Условие вызываемый в окно макроса нажатием соответствующей кнопки панели инструментов. Условие задается с помощью логического выражения. Для образования набора макрокоманд, которые нужно связать с выполнением условия, в их условии записывается многоточие (...). Если выражение истинно, выполняется макрокоманда, находящаяся в той же строке и все следующие за ней макрокоманды до следующей макрокоманды с условием Если выражение ложно, то макрокоманда, находящаяся в той же строке и все следующие за ней макрокоманды, у которых вместо условия проставлено многоточие (...), будут пропущены.
Таким образом, условие позволяет пропускать некоторый набор макрокоманд из последовательности макрокоманд макроса. Например:
Первое условие макроса (условие 1) проверяет значение поля ГОРОД в текущей записи формы. Эта форма работает с данными о студентах. На момент получения управления макросом эта форма должна быть текущим объектом.
Если <условие 1> истинно, т. е. студент не является жителем Петербурга, выполняются четыре первых макрокоманды. Пятая макрокоманда будет выполнена только в случае выполнения <условие 2>.
При невыполнении <условие 1> пропускаются первая макрокоманда с этим условием и следующие за ней, отмеченные многоточием.
Примеры логических выражений в условии выполнения макрокоманды:
1. Проверка в текущей записи формы, из которой запускается макрос:
- значения в поле ОЦЕНКА на равенство двойке
ОЦЕНКА = 2;
- нахождения значения в поле ДАТА ИСПОЛНЕНИЯ в интервале не раньше 2-фев-95 и не позже 2-мар-95
[Дата исполнения] Between #2-фев-95# And #2-мар-95#;
- значения в поле ОЦЕНКА на равенство пустому (Null) значению
Is Null([ОЦЕНКА]) или [ОЦЕНКА] Is Null.
2. Проверка одновременного выполнения двух условий на равенство заданным значениям в поле НП и поле ОЦЕНКА:
[НП]="Информатика" And [ОЦЕНКА]=5
3. В условиях могут использоваться функции, например, Dcount( ).
Подсчет числа значений в поле СТ таблицы ПРЕПОДАВАТЕЛЬ и сравнение его с заданным:
DCount("[СТ]", "ПРЕПОДАВАТЕЛЬ")>50.
4. Функция MsgBox() может быть использована для вывода на экран окна диалога, содержащего нужное сообщение, и кнопок ОКи Отмена, нажатие которых формирует то или иное значение функции.
Сравнивая значение, возвращаемое функцией MsgBox(), с заданным, пользователь может выбрать вариант действий:
MsgBox("Выдать справку?",1)=1
Первый параметр функции задает выводимое на экран сообщение, единица на месте второго параметра определяет отображение в окне диалога кнопок ОКи Отмена. Если пользователь нажимает кнопку ОК, функция возвращает значение "1", если кнопку Отмена, функция возвращает значение "2".
5. В условиях могут использоваться значения элементов управления из объектов, которые не являются текущими в данный момент.
Сравнение значения поля КОЛ в текущей записи формы ГРУППА с заданным:
Forms![ГРУППА]![КОЛ]<30 .
задание
Необходимо рассчитать количество студентов в группах и внести эти данные в поле КОЛ в таблице ГРУППА.
Подсчет количества студентов реализован запросом Число студентов в группе. Обновление поля КОЛ на основе полученных в этом запросе данных будет выполнять запрос Обновление ГРУППА_КОЛ. Последовательное выполнение этих запросов решает поставленную задачу.
Создание запроса Обновление ГРУППА_КОЛ.
Сначала создадим запрос на выборку на основе таблицы ГРУППА и таблицы ЧИСЛО СТУДЕНТОВ, которая создается при выполнении запроса Число студентов в группе (открыть запрос в конструкторе и на панели инструментов конструктора выбрать тип запроса Создание таблицы…). Для преобразования запроса на выборку в запрос на обновление выберите на панели инструментов конструктора тип запроса Обновление. Заполните бланк запроса в соответствии с рисунком 13 и сохраните под именемОбновление ГРУППА_КОЛ.
Создание макроса Расчет числа студентов в группах.
Создадим макрос, который решит поставленную задачу. Для этого необходимо заполнить бланк создания макроса в соответствии с рисунком 14 и сохранить его под именем Расчет числа студентов в группах.
Рис.13. Запрос на обновление таблицы Группа
Рис.14. Макрос задачи в режиме конструктора
Рассмотрим некоторые макрокоманды:
- СдвигРазмер – позволяет задать размер и место положение окна активного объекта
- УстановитьСообщения – отключает вывод на экран окон сообщений с предупреждениями на время выполнения макроса
- ОткрытьЗапрос – выполняет запрос. Имя этого запроса указывается в аргументах макрокоманды
- ОткрытьТаблицу – открывает таблицу Число студентов, созданную запросом Число студентов в группе
- ВыводНаЭкран – в зависимости от значения аргумента макрокоманды Включить вывод,позволяет отображать или не отображать на экране открываемые в следующих макрокомандах таблицы
- Сообщение – выдает сообщение “Таблица Группа обновлена”.
ЗАДАНИЕ №8
РАЗРАБОТКА ГЛАВНОЙ КНОПОЧНОЙ ФОРМЫ
Для организации эффективной работы пользователя необходимо создать целостное приложение данной предметной области, все компоненты которого должны быть сгруппированы по функциональному назначению. При этом необходимо обеспечить удобный графический интерфейс пользователя.
Для объединения объектов в едином диалоговом приложении могут быть созданы так называемые кнопочные формы. Кнопочная форма является панелью управления приложением. Кнопки такой формы обеспечивают вызов других кнопочных форм, а также отдельных объектов: отчетов, форм, макросов, модулей, с которых начинается решение задачи. Сюда же помещаются кнопки для возврата к кнопочным формам предыдущих уровней, выхода из Access. Обычно также предусматривается кнопка для изменений самой кнопочной формы.
В Access имеется средство автоматизированной разработки формы по управлению приложением, называемое диспетчером кнопочных форм.