- •Макросы
- •Техника создания макросов
- •Примечание:
- •Примечание:
- •Редактирование макросов
- •Выполнение макроса с условиями
- •Основные термины языка программирования vba
- •Р ис. 6.1. Окно модуля
- •Раздел описания
- •Создание процедуры
- •Тип данных Хранимые значения Область значений
- •Integer Целое число От -32768 до 32767
- •Условные операторы
- •Операторы цикла
- •Процедура-функция для обработки событий в формах.
- •Примечание:
- •Использование процедуры-функции в отчетах
- •Применение процедур-подпрограмм
- •Выполнение кода vba
- •Примечание:
- •Процедура Вызов
- •Примечание:
Использование процедуры-функции в отчетах
В рассматриваемом примере используется функция, вызываемая из отчета Информация о ценах. Вызов функции будет происходить во время обработки полей в Области данных отчета при просмотре отчета.
• Открыть отчет Информация о ценах в режиме конструктора.
• На панели элементов активизировать кнопку Поле и перенести ее в свободное место области данных отчета. Текстовое поле «Поле N» пометить и удалить; для поля «Свободный» открыть окно Свойств и в закладке Данные поля «Данные» воспользоваться построителем выражений. Для этого надлежит нажать кнопку с тремя точками. В результате на экране появится диалоговое окно Построитель, где выбрать построитель выражений, вследствие чего произойдет его запуск и откроется диалоговое окно.
В левом списке окна построителя найти папку с функциями и двойным щелчком открыть ее. Выбрать функции базы данных Тойота_макросы_модули и открыть список модулей базы. Затем дважды щелкнуть на функции Анализ_цен_прейскуранта (в третьем столбце). В верхней области диалогового окна будет сформировано выражение для вызова функции Анализ_цен_прейскуранта. Нажать кнопку ОК и управление перейдет к конструктору отчетов. Сохранить отчет. С этого момента значение области данных Цена 6 рублях будет анализироваться при просмотре отчета и соответствующие результаты будут помещаться в окно отладки (см. раздел Работа с окном отладки).
Примечание; В прилагаемой к описанию базе данных Тойота_макросы_модули приведен вариант использования функции Анализ_заводской_цены в отчете Обзор заказов, которая позволяет вывести в окно отладки фамилии клиентов и модели приобретенных ими автомобилей, заводская цена которых превышает 37000 р.
Применение процедур-подпрограмм
При создании модулей наряду с процедурами-функциями широко при меняются подпрограммы. На языке VBA подпрограммы называют процедурами-подпрограммами и обозначают ключевым словом Sub. В отличие от процедур-функций (функций) процедуры-подпрограммы (подпрограммы) выполняя свои задачи, могут не возвращать результирующие значения Подпрограмму можно запускать из других процедур, но ее нельзя вызвать так, как функцию, указав имя в выражении или операторе.
Рассмотренная функция Рубли_в_Доллары может быть оформлена как подпрограмма, поскольку в ней не формируется возвращаемое значение.
Оформим вычислительную часть процедуры Рубли_в_Доллары как подпрограмму Вычисление и вызовем ее в функции Рубли_в_Доллары. Начнем с создания подпрограммы:
Откройте модуль Прейскурантные расчеты в режиме конструктора.
• Выберите в меню Вставка команду Процедура.
• В открывшемся окне активизируйте переключатель подпрограмма (Sub),
введите имя Вычисление и нажмите кнопку ОК.
Итак, в модуль включена новая процедура. Access 97 автоматически вводит в окно модуля начальную и конечную строки подпрограммы. Ключевое слово Sub указывает на то, что речь идет о подпрограмме:
Public Sub Вычисление () End Sub
Далее необходимо через буфер обмена скопировать операторы из функции Рубли_в_Доллары в создаваемую подпрограмму. Для этой цели сконфигурируйте окно модуля таким образом, чтобы на экране одновременно отображались обе процедуры.
• Разделите окно модуля на две панели посредством вешки разбивки (она находится над бегунком вертикальной полосы прокрутки).
• Выполните щелчок в верхней панели и выберите в списке процедур функцию Рубли_в_Доллары. В нижней панели по-прежнему будет отображаться подпрограмма Вычисление.
• Поместите курсор в строке оператора присваивания, определяющего цену в долларах, и нажмите клавиши [Ctrl+Y]. Строка будет вырезана и помещена в буфер обмена.
• Введите новый оператор вызова подпрограммы Вычисление.
• Выполните щелчок в нижней панели и поместите курсор в пустую строку между начальной и конечной строками подпрограммы Вычисление.
• Вставьте в эту строку содержимое буфера обмена с помощью клавиш
[ Ctrl+V].
Рис. 6.9. Определение и вызов подпрограммы
Теперь выражение для пересчета цен определено как подпрограмма, которая может быть вызвана из любой процедуры базы данных. Вызов подпрограммы осуществляется посредством оператора вызова, в котором указывается имя подпрограммы (скобки в данном случае не ставятся).
Чтобы отменить разделение окна модуля на панели, достаточно перетащить вешку разбивки под строку заголовка.
В режиме просмотра Представление полного модуля нет необходимости в разделении окна модуля.