Краткие теоретические сведения

Модуль – это набор описаний и процедур на языке 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

Наши рекомендации