5. АВТОМАТИЗАЦИЯ РАБОТЫ ПРИЛОЖЕНИЯ С ПОМОЩЬЮ МОДУЛЕЙ
Сохранение макроса в виде модуля
Модуль – это набор процедур Visual Basic. По сравнению с макросом модуль – инструмент более гибкий и удобный. Основной недостаток модулей состоит в том, что их разработка доступна только достаточно опытным пользователям, знакомым с языком программирования Visual Basic, в то время как создать макрос может практически любой пользователь. Поэтому в Access предусмотрена возможность преобразования макросов в модули.
Пример 5.1.В форме Товары обеспечить (с помощью общего модуля) перехват запросов на удаление товаров.
Преобразование группы макросов Товары в модуль
1. Откройте группу макросов Товары в режиме конструктора.
2. В группе Работа с макросами перейдите в группу Сервис и выберите Преобразовать макросы.
3. Установите или сбросьте флажки Добавить программу обработки ошибок и Добавить примечания макросов. Нажмите кнопку Преобразовать.
4. Откройте общий модуль Преобразованный макрос: в режиме конструктора – в базе данных автоматически сформировались на Visual Basic пользовательские функции (в том числе функция Товары_Удаление() ).
Привязка формы Товары к функции Товары_Удаление() в общих модулях базы 1. Откройте форму Товары в режиме конструктора и откройте окно свойств формы.
2. Во вкладке События щелкните в строке Удаление и удалите обращение к макросу Товары.Удаление. Щелкните по кнопке построителя (...), выберите Выражения, а затем с помощью построителя выражений среди функций базы выберите и вставьте функцию Товары_Удаление().
База данных может содержать не только общие модули, доступные из любой формы, но и модули, связанные с формами и доступные только при открытии соответствующей формы.
Пример 5.2.В форме Удаление покупателей обеспечить (с помощью модуля формы) перехват запросов на удаление покупателей.
Создание списка заказчиков
1. Выберите вкладку ленты Создание и в группе Запросы сделайте щелчок левой кнопкой мыши по значку Конструктор запросов.
2. В открывшемся окне диалога Добавление таблицы выберите таблицы Покупатель и Заказы.
3. Добавьте в запрос поле Предпр из таблицы Покупатель
4. Откройте окно свойств запроса и в строке Уникальные значения выберите Да.
5. Сохраните запрос с именем Заказчики.
Создание модуля формы Удаление покупателей
1. Откройте форму Удаление покупателей в режиме конструктора и откройте окно свойств формы.
2. Во вкладке События в строке Удаление щелкните по кнопке построителя (...), а затем выберите Программы
3. Откроется модуль формы с шаблоном процедуры-подпрограммы Form_Delete.
Введите текст процедуры на языке Visual Basic:
Private Sub Form_Delete(Cancel As Integer)
Dim StrNew As String
StrNew = Chr$(10)
If DCount("[Предпр]", "[Заказчики]", "[Предпр] =Forms![Удаление покупателей]![Предпр] ") _ <> 0 Then
MsgBox "У покупателя " & Me![Предпр] & " существуют заказы." & StrNew & StrNew &_
"Перед удалением покупателя " & Forms![Удаление покупателей]![Предпр] & _
StrNew & StrNew & "следует удалить все его заказы.", 48, "Удаление покупателя" Cancel = True
Exit Sub
End If
If MsgBox("Вы уверены, что хотите удалить покупателя " & StrNew & _
Forms![Удаление покупателей]![Предпр] & "?", 33, "Удаление покупателя") <> 1 Then
Cancel = True
End If
End Sub
Примечание. Для разделения строк в диалоговом окне команды MsgBox допускается использование символа возврата каретки (Chr$(13)), символа перевода строки (Chr$(10)) или комбинацию этих символов (Chr$(13) & Chr$(10)).
Второй аргумент команды MsgBox – число 48, формирует в диалоговом окне значок "Предупреждение".
4. Откройте форму Удаление покупателей и протестируйте удаление заказчиков товаров.
Пример 5.3.Обеспечить перехват запросов на удаление заказа, чтобы:
• посмотреть, реализован ли этот заказ;
• если заказ не реализован, то перед его удалением выдать предупреждающее сообщение.
Пример 5.4.В форме Заказы и продажи текущего покупателя обеспечить переход сразу к нужному покупателю.
Добавление поля со списком для перехода сразу к нужному покупателю
1. Откройте форму Заказы и продажи текущего покупателя в режиме конструктора и перетащите границу раздела заголовка формы так, чтобы появилось место для размещения поля со списком.
2. В конструкторе на панели элементов управления нажмите кнопки Мастера и Поле со списком и щелкните в разделе заголовка формы.
3. Следуйте указаниям, приведенным в диалоговых окнах мастера:
• выберите переключатель Поиск записи в форме на основе значения, которое содержит поле со списком;
• выберите поле Предпр, по которому планируется осуществлять поиск;
• задайте подпись “Перечень покупателей:” в качестве имени вставленного в форму раскрывающегося списка.
4. Сохраните и запустите форму: - раскройте список “Перечень покупателей:”, выделите нужный элемент списка и нажмите Enter - форма перейдет к отображению покупателя, выбранного в раскрывающемся списке;
- с помощью полосы прокрутки перейдите к следующему покупателю – значение в элементе “Перечень покупателей:” не изменилось (т.е. данные в форме синхронизированы не полностью).
Создание модуля формы для синхронизации элемента Перечень покупателей: с данными в форме
1. Откройте форму Заказы и продажи текущего покупателя в режиме конструктора и откройте окно свойств формы.
2. Во вкладке События в строке Текущая запись щелкните по кнопке построителя (...), а затем выберите Программы - при этом откроется модуль формы с шаблоном процедуры-подпрограммы Form_Current().
3. Введите текст процедуры на языке Visual Basic, используя краткий синтаксис для ссылки на элементы текущей формы (например, Me![Предпр]):
Private Sub Form_Current()
4.
Пример 5.5.Создайте модуль формы Товары для синхронизации элемента “Перечень товаров:” с данными в форме (см. пример 2.8).
Пример 5.6.Создайте модуль формы Ввод покупателей для синхронизации элемента “Перечень покупателей:” с данными в форме (см. пример 2.9).
Задание 5 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.