ACCESS_2010-ч2
.pdf10
По окончании формирования текста макроса закройте окно Конструктора с сохранением макроса с заданным именем.
Проверка работы макроса
Запустите макрос СРАВНЕНИЕ СЧЕТОВ на выполнение двойным щелчком по его значку в окне Все объекты Access. В нашем примере в качестве результата будет сообщение В банке депозитных счетов не больше,
чем карт-счетов.
Чтобы убедиться в работе другой ветви макроса, откройте таблицу СЧЕТ и добавьте в нее, например, две записи:
Номер |
Тип |
Дата |
Капита- |
Остаток |
Номер |
Номер |
счета |
счета |
открытия |
лизация |
на счете, |
филиала |
клиента |
|
|
счета |
|
руб. |
|
|
|
|
|
|
|
|
|
Ц18 |
Д |
14.02.2010 |
Да |
2000000 |
511 |
48 |
Ц22 |
Д |
20.03.2010 |
Да |
800000 |
513 |
48 |
После этого запустите макрос на выполнение – выводится сообщение В
банке депозитных счетов больше, чем карт-счетов.
Если ожидаемые результаты не получены, то отладьте макрос,
используя пошаговый режим.
Задание 6.3. Создать макрос, позволяющий выбирать вид открываемой формы КЛИЕНТ. Для этого он должен выводить диалоговое окно с вопросом к пользователю о виде открываемой формы и с двумя кнопками [Да] и [Нет].
По нажатии [Да] должна открываться форма без поля ПОДП, а по нажатии
[Нет] – со всеми полями.
Макрос сохранить с именем СКРЫТИЕ ПОЛЯ В ФОРМЕ.
Выполнение задания Откройте окно Конструктора макроса. Сформируйте текст условного
макроса, приведенного на рис. 6. 5.
Проверяемое условие в макрокоманде Если сформируйте в Построителе выражений – выберите функцию MsgBox из категории
11
Сообщения и задайте только два ее аргумента: prompt – текст, выводимый в диалоговом окне, в кавычках и button – число 4.
Рис. 6.5. Текст макроса СКРЫТИЕ ПОЛЯ В ФОРМЕ Закройте окно Конструктора с сохранением макроса с заданным
именем.
Проверка работы макроса
Запустите макрос СКРЫТИЕ ПОЛЯ В ФОРМЕ на выполнение. В
открывшемся диалоговом окне нажмите кнопку [Да] и убедитесь в том, что открывается форма КЛИЕНТ без поля ПОДП.
12
Затем закройте эту форму, повторно запустите макрос, в открывшемся диалоговом окне нажмите кнопку [Нет] – откроется форма КЛИЕНТ со всеми полями.
Задание 6.4. Создать макрос, позволяющий клиентам, имеющим карт-счета,
давать бонус в размере 10 % от остатка на счете и просматривать остатки на карт-счетах до и после предоставления бонуса.
Макрос сохранить с именем БОНУС.
Выполнение задания Откройте окно Конструктора макроса. Сформируйте текст макроса,
который содержит вложенный макрос, повторяющийся многократно, как на рис. 6.6.
Условие отбора записей в макрокомандах ПрименитьФильтр и ОткрытьФорму, ссылку на поле ОСТ и выражение для расчета его новых значений в макрокоманде ЗадатьЗначение создайте в Построителе выражений.
Выражение для подсчета числа повторов запуска макроса НАЧИСЛЕНИЕ в макрокоманде ЗапускМакроса наберите на клавиатуре.
13
14
15
Рис. 6.6. Текст макроса БОНУС Закройте окно Конструктора с сохранением макроса с заданным
именем.
Запустите макрос БОНУС на выполнение и убедитесь в его соответствии требованиям задания 6.4. В противном случае отладьте макрос в пошаговом режиме.
Итак, продемонстрированы макросы, различные по структуре: в
задании 6.1, – линейный; в задании 6.2, 6.3 – условные; в задании 6.4 – с
вложенным макросом, содержащим цикл.
16
6.2. Макросы, связанные с событиями
6.2.1.Внедренные макросы
Макрос данных
Для выполнения следующего задания скорректировать таблицу СЧЕТ таким образом:
1)добавить поле СОСТОЯНИЕ, которое будет предназначено для ввода значений состояния счетов клиентов из списка, включающего три значения – активный (со счетом могут выполняться операции),
заблокирован (со счетом не могут выполняться операции),
налогооблагаемый (счет, с суммы остатка которого взимается налог в размере 10%).
Для этого выполнить следующее:
открыть таблицу СЧЕТ в режиме Конструктора;
набрать имя поля СОСТОЯНИЕ, выбрать тип поля Мастер подстановок.
В результате появится 1-ое окно Мастера, в котором переключатель установить в положение Будет введен фиксированный набор значений и
нажать [Далее];
во 2-ом окне Мастера в первые три клетки столбца Столбец1 набрать значения активный, заблокирован, налогооблагаемый и [Далее];
в 3-ем окне Мастера установить флажок Ограничиться списком и
[Готово]. В результате для поля СОСТОЯНИЕ будет установлен тип поля
текстовый;
2)заполнить поле СОСТОЯНИЕ. Для этого перейти в режим таблицы и ввести в поле СОСТОЯНИЕ для всех записей значение активный,
выбирая его из раскрывающегося списка;
3)добавить поле НАЛОГ типа денежный, которое будет предназначено для хранения сумм налога, автоматически вычисляемых макросом данных.
17
Задание 6.5. Создать макрос данных, позволяющий при переходе счета из категории активный в категорию заблокирован или налогооблагаемый
автоматически вычислять сумму налога и заносить ее в поле НАЛОГ таблицы СЧЕТ.
Макрос должен осуществлять проверку – счет заблокирован или налогооблагаемый – до внесения изменений в запись таблицы, которое происходит в момент перехода к другой записи или по завершении работы с таблицей.
Выполнение задания Откройте таблицу СЧЕТ в режиме таблицы и на вкладке Таблица в
группе До событий нажмите кнопку [До изменения]. В результате откроется окно Конструктора макроса. В нем сформируйте текст макроса,
приведенный на рис. 6.7. Проверяемые условия в макрокоманде Если
создавайте с помощью Построителя выражений.
Чтобы ввести макрокоманду Иначе если после набора текста второго примечания Если счет не заблокирован, то осуществляется проверка – является ли он налогооблагаемым, щелкните по гиперссылке Добавить блок
"Иначе если".
Рис. 6.7. Текст макроса До изменения
18
Закройте окно макроса. Данный макрос не регистрируется как объект БД в окне Все объекты Access. Он внедрен в таблицу СЧЕТ.
Проверка работы макроса
В таблице СЧЕТ измените состояние счетов К-11, К-37, Ц-34, Ц66, как на рис. 6.8, и убедитесь, что макрос данных До изменения автоматически вычислил сумму налога в поле НАЛОГ, как на рис. 6.8.
Рис. 6.8. Таблица СЧЕТ после работы макроса
Примечани е. Если потребуется удалить макрос данных, то на вкладке Таблица следует
нажать кнопку [Именованный макрос], выбрать Переименовать или удалить макрос, в открывшемся окне Диспетчер макросов данных выбрать нужный макрос
(например, До изменения), щелкнуть по гиперссылке Удалить, подтвердить удаление и закрыть окно Диспетчера.
Внедренный макрос
Для выполнения следующего задания создать форму ФИЛИАЛ по таблице ФИЛИАЛ. Для этого выделить данную таблицу, на вкладке
Создание нажать кнопку [Другие формы] и сохранить построенную форму с именем ФИЛИАЛ.
Задание 6.6. Создать внедренный в форму ФИЛИАЛ макрос, позволяющий при щелчке на некотором номере филиала в этой форме открывать отчет ОТЧЕТ2 и отображать в нем только записи, относящиеся к данному филиалу.
Выполнение задания:
откройте форму ФИЛИАЛ в режиме Конструктора;
19
для поля НФ вызовите окно свойств и на вкладке События в строке
"Нажатие кнопки" вызовите Построитель щелчком по кнопке ;
в открывшемся окне Построитель выделите Макросы и [ОК]. Откроется окно Конструктора макроса с заданным системой именем ФИЛИАЛ:НФ:Нажатие кнопки;
сформируйте текст внедренного макроса, как на рис. 6.9, и сохраните его.
Обратите внимание, что после этого в окне свойств поля НФ в строке
"Нажатие кнопки" появился текст [Внедренный макрос];
закройте с сохранением окно свойств и окно Конструктора формы.
Проверка работы макроса
Откройте форму ФИЛИАЛ в режиме формы. Щелкните на некотором номере филиала – отроется отчет ОТЧЕТ2 и в нем отобразятся только записи,
относящиеся к данному филиалу.
Рис. 6.9. Внедренный макрос
6.2.2. Макросы, связанные с событиями элементов управления в форме
Для выполнения следующего задания в форме КЛИЕНТ в "Области данных" создать свободное поле. Для поля вызвать окно свойств и на вкладке
Все в строке Имя дать ему имя ФИО_ КЛИЕНТА. Для надписи вызвать окно свойств и на вкладке Все в строке Подпись в качестве надписи этого поля