Краткие теоретические сведения
Модуль – это набор описаний и процедур на языке Visual Basic. Каждая процедура в модуле может быть либо процедурой-функцией Function, либо процедурой-подпрограммой Sub.
Существуют два типа модулей: модули класса и стандартные модули.
Модули класса – это модули форм и модули отчетов, связанные с определенной формой или отчетом. Они часто содержат процедуры обработки событий, запускаемые в ответ на событие в форме или отчете. Процедуры обработки событий используются для управления поведением формы или отчета и их откликом на события, такие как нажатие кнопки. При создании первой процедуры обработки события для формы или отчета автоматически создается связанный с ней модуль формы или отчета.
Стандартные модули содержат общие процедуры, не связанные ни с каким объектом. Список стандартных модулей располагается на вкладке Модули окна База данных.
Макрос – набор из одной или более последовательно выполняемых операций (макрокоманд) в ответ на какое-либо событие. Макросы могут быть полезны для автоматизации часто выполняемых задач.
Задание
Создать модуль класса, содержащий процедуры-подпрограммы, поддерживающие ввод дат с помощью электронного календаря.
Создать макрос, содержащий две группы макрокоманд, первая должна обеспечивать вывод на экран сведений о наличии книг на руках у читателя по нажатию кнопки Поиск долгов читателя в форме Движение книг, а вторая должна выводить на экран все записи в форме Движение книг по нажатию кнопки Все записи.
Последовательность выполнения работы
Создание модуля
Чтобы календарь не размещался в форме Движение книг постоянно, создайте для него отдельную форму. Для этого в окне База данных на вкладке Формы двойным щелчком выберите Создание формы в режиме конструктора.
В Области данныхформыразместите электронный календарь. В окне свойств электронного календаря на закладке Другие найдите Имякалендаря, запомните его, так как оно пригодится при создании процедур модуля. Отключите в форме полосы прокрутки, область выделения, кнопки перехода и оптимизируйте размер окна формы. Сохраните форму под названием Календарь. Закройте созданную форму.
Откройте форму Движение книг в режиме Конструктораи удалите из нее ранее встроенный календарь.
Выберите на панели инструментов кнопку Программа, чтобы просмотреть модуль формы.
Окно редактирования модуля включает в себя четыре окна: слева вверху – Project, слева внизу Properties, справа вверху большое, содержащее коды подпрограмм и справа внизу Immediate. Рассмотрите все окна.
Сейчас в большом окне справа содержится код процедуры- подпрограммы, отвечающей за работу кнопки Сведения о читателях.
Под строкой End Sub – конец процедуры, введите процедуру, обеспечивающую открытие формы Калькулятор:
Private Sub Form_Open(Cancel As Integer)
'Открыть форму Календарь
DoCmd.OpenForm "Календарь"
'Метод Today делает текущей датой календаря сегодняшнюю дату
Forms!Календарь!Имя календаря.Today
End Sub
Ниже введите процедуру, обеспечивающую ввод даты, выбранной в электронном календаре, в поле Дата_выдачи:
Private Sub Дата_выдачи_DblClick(Cancel As Integer)
'Присваивание дате значения, выбранного в календаре
Дата_выдачи = Forms!Календарь!Имя календаря.Value
End Sub
Ниже введите процедуру, обеспечивающую ввод даты, выбранной в электронном календаре, в поле Дата_возврата_план:
Private Sub Дата_возврата_план_DblClick(Cancel As Integer)
'Присваивание дате значения, выбранного в календаре
Дата_возврата_план = Forms!Календарь!Имя календаря.Value
End Sub
Ниже введите процедуру, обеспечивающую ввод даты, выбранной в электронном календаре, в поле Дата_возврата_факт:
Private Sub Дата_возврата_факт_DblClick(Cancel As Integer)
'Присваивание дате значения, выбранного в календаре
Дата_возврата_факт = Forms!Календарь!Имя календаря.Value
End Sub
Вместо слов Имя календаря в каждой процедуреукажите то имя, которое видели на закладке Другие в окне свойств электронного календаря.
Чтобы вернуться из окна модуля формы в режим конструктора, выберите командуFile/Close and Return to Microsoft Access.
Вызовите окно свойств формы и на закладке События в строке Открытие из списка выберите [Процедура обработки событий].
Щелкните в Области данных по полю Дата выдачи, чтобы вызвать окно свойств этого поля и на закладке События в строке Двойное нажатие кнопки из списка выберите [Процедура обработки событий].
Щелкните по полю Дата возврата план и на закладке События в строке Двойное нажатие кнопки из списка выберите [Процедура обработки событий].
Щелкните в Области данных по полю Дата возврата факт и на закладке События в строке Двойное нажатие кнопки из списка выберите [Процедура обработки событий].
Сохраните и закройте форму.
Проверьте, чтобы при открытии формы Движение книг в режимепросмотра данных автоматически открывалась форма Календарь.
Выберите в календаре какую-нибудь дату и дважды щелкните в поле Дата выдачи, чтобы ее ввести. Аналогичным образом введите даты в поля Дата возврата план и Дата возврата факт.
Создание макроса
В окне База данных перейдите на вкладку Макросыи нажмите кнопкуСоздать. Загрузится окно конструктора макросов.
Выберите на панели инструментов кнопку Имена макросов, а затем кнопку Условия. В окно конструктора будут добавлены столбцы Имя макроса и Условие.
Создайте группу макрокоманд, которая по нажатию кнопки Поиск долгов читателя будет последовательно выполнять следующие операции:
а)отображать все записи из таблицы Журнал;
б) выводить на экран диалоговое окно, запрашивающее ввод номера билета читателя;
в) осуществлять отбор только тех записей в Журнале, которые содержат указанный номер билета и незаполненную ячейку в поле Дата возврата факт;
г) если такие записи не найдены, то выводить на экран сообщение об отсутствии книг на руках у читателя.
Для создания данной группы макрокоманд заполните верхнюю строку в окне конструктора: в столбце Имя макросаукажитеКнопка поиск, а в столбце Макрокоманда из раскрывающегося списка выберите ПоказатьВсеЗаписи.
Заполните вторую строку в окне конструктора: в столбце Макрокоманда выберите ПрименитьФильтр. В нижней части окна конструктора будут добавлены аргументы макрокоманды: имя фильтра и условие отбора. Строку Имя фильтра оставьте пустой, а в строке Условие отборавведите[номер билета]=[введите номер билета] And [дата возврата факт] Is Null.
Заполните третью строку в окне конструктора: в столбце Условие введите [дата выдачи] Is Null,а в столбцеМакрокоманда из раскрывающегося списка выберите Сообщение. В нижней части окна конструктора будут добавлены аргументы макрокоманды: сообщение, сигнал, тип, заголовок. В строке Сообщение введите Долгов нет, в строке Тип из раскрывающегося списка выберите Информационное, в строке Заголовок введите Сведения о наличие книг на руках у читателя.
Создайте группу макрокоманд, которая по нажатию кнопки Все записи будет выводить на экран все записи в форме Движение книг. Для этого оставьте пустой четвертую строку в окне конструктора, чтобы разделить группы макрокоманд.
Заполните пятую строку: в столбце Имя макросаукажите Кнопка все записи, а в столбце Макрокоманда из раскрывающегося списка выберите ПоказатьВсеЗаписи.
Сохраните данный макрос под название Макрос1 и закройте окно конструктора макросов.
Откройте форму Движение книг в режиме конструктора.
На панели элементов выберитекнопкуКнопкаи щелкните на свободном месте в области Примечания формы.
На первом шаге мастера в списке Категории выберите Разное, а в спискеДействия – Выполнить макрос.
На втором шаге выберите Макрос1.кнопка поиск.
На третьем шаге в поле Текст введите Поиск долгов читателя и нажмите кнопку Готово.
Аналогичным способом разместите в Примечании формы кнопку Все записи.
Проверьте работу кнопок.
Сохраните и закройте форму.
Внимание! Чтобы защитить выполненную работу на «отлично», необходимо самостоятельно создать макрос, выводящий в формате Microsoft Excel (*.xls) результат запроса Расчет размера пени. Имя файла – X:/Справка о пени.xls, режим – Автозагрузка. Макрос должен запускаться при нажатии кнопки Пени в форме Движение книг.
Контрольные вопросы
1. Что такое модуль? Объясните назначение модулей.
2. Как создать и активизировать модуль?
3. Что такое макрос?
4. Как создать и активизировать группу макрокоманд?
Лабораторная работа 8