Для создания процедуры (подпрограммы или функции) в Access 97 предназначена команда Процедураиз меню Вставка,которая имеет аналог в
панели инструментов Visual Basic.В результате ее активизации открывается диалоговое окно Вставка процедуры,которое служит для выбора типа процедуры (подпрограмма (Sub) или функция (Function))и присвоения ей имени
(поле Имя).Подпрограмму или функцию можно создать и другим способом — введя в окно модуля инструкцию Subили Function.
Рис. 6. 4. Диалоговое окно создания процедуры
При создании процедуры можно задать область ее использования с помощью следующих переключателей (Область определения):
— общая (Public)— процедура доступна для всех процедур во всех модулях.
— личная (Private)— процедура доступна для других процедур только в том
модуле, в котором она объявлена.
Если процедуры не используются вне данного модуля, их следует декларировать как личные. При объявлении личной процедуры в первой строке перед ключевым словом Function или Sub вставляется префикс Private:
Private Function Имя ()
ИЛИ
Private Sub Имя ()
В результате установки опции Все локальные переменные считать статическимилокальным переменным присваивается тип Static (Статический). В этом случае локальные переменные сохраняются между вызовами. Атрибут Static не влияет на переменные, которые объявлены вне данной процедуры, даже если они используются в процедуре.
Попробуем создать простую процедуру-функцию Предположим, что на основе цен, выраженных в рублях, должны быть автоматически определены и указаны в отдельном поле цены в американских долларах. Мы будем использовать форму Прейскурант цен, содержащую поля Название товара, Цена в рублях и Цена в долларах, которые связаны с соответствующими полями таблицы Товары отношением один к одному.
Рис. 6. 5.Пример формы
Чтобы решить данную задачу, необходимо создать процедуру, определяющую значение поля USD на основе содержимого поля Цена в рублях:
• Откройте окно модуля и вызовите команду Процедураиз меню Вставкаили нажмите соответствующую кнопку на панели инструментов. На экране появится диалоговое окно для указания имени создаваемой процедуры.
Рис. 6. 6. Выбор типа процедуры и указание ее имени
Активизируйте переключатель функция (Function),введите в поле Имяимя функции Рубли_в_Доллары и щелкните на кнопке ОК.Access 97 генерирует заготовку функции (начальный и конечный операторы) с указанным именем. Вам останется ввести операторы, которые будут производить расчеты. Окончательный вариант создаваемой функции должен быть приблизительно таким:
Public Function Рубли_в_Доллары ()
' Пересчет цены в рублях в цену в долларах
Forms! [Прейскурант цен]! [Цена в долларах]= Forms! [Прейскурант цен]! [Цена в рублях]/5.5
End Function
После ввода каждой строки процедуры программа проверяет синтаксис введенного оператора. При обнаружении синтаксической ошибки на экране появляется соответствующее сообщение. Следует учитывать, что возможности синтаксической проверки VBA ограничены. Программа проверяет только корректность написания операторов и не обнаруживает более сложные ошибки, такие как обращение к полю, которого нет. Не обнаруживаются также ошибки в именах формы — они дают о себе знать только при выполнении процедуры.
Примечание:
Режим проверки синтаксиса отменяется путем выключения опции проверка синтаксиса,расположенной на вкладке Модульдиалогового окна Параметры.В этом случае проверка осуществляется только при компилировании.
• Выберите в меню Файлкоманду Сохранить,чтобы сохранить модуль с созданной функцией Присвойте модулю имя Прейскурантные расчеты.
Примечание:
Имя функции должно начинаться только с букв и не может содержать более 255 символов.
В имени функции наряду с буквами можно использовать цифры и знак подчеркивания, однако в нем не должно быть пробелов, пунктуационных знаков и ключевых слов VBA. Следите за тем, чтобы одно имя дважды не использовалось в одной базе данных.
Тело созданной процедуры состоит из одного оператора присваивания (=). В результате его выполнения вычисляется значение цены в долларах, которое заносится в соответствующее поле формы.