Как правило, процедуры-функции ориентированы на обработку событий. Access 97 позволяет связывать разработанные процедуры-функции с вычисляемым полем несколькими способами (например, можно создать процедуру-функцию, которая будет вызываться при выполнении щелчка на некотором поле, из макроса или из другой процедуры). Способ связывания зависит от типа процедуры-функции.
Результат выполнения процедуры-функции обычно применяется:
— в качестве значения по умолчанию для поля таблицы; — в качестве значения критерия для запросов или фильтров;
— в качестве содержимого поля.
В рассматриваемом примере используется процедура, вызываемая из формы Прейскурант цен. Так как пересчет цен будет происходить после ввода
значений цен в рублях, вызов процедуры должен осуществляться после актуализации поля Цена в рублях;
• Откройте форму Прейскурант цен в режиме конструктора.
• Маркируйте поле Цена в рублях и откройте окно свойств формы, активизировав в ее контекстном меню команду Свойства.
• На вкладке Событиязадайте в поле После обновлениявызов функции в такой форме.
=Рубли_в_Доллары ()
• Перейдите в режим конструктора формы и сохраните изменения. Внимание!
Если после имени функции не введена пара скобок, Access 97 заключит это имя в квадратные скобки и будет рассматривать как имя поля.
При вводе значения в поле После обновленияможно воспользоваться услугами построителя выражений. Для этого надлежит нажать в окне свойств кнопку с тремя точками, расположенную справа от поля После обновления.В результате на экране появится диалоговое окно Построитель,которое служит для выбора варианта создания выражений, макросов или программного кода. Остановим выбор на построителе выражений.
Рис. 6.7. Окно выбора построителя
Нажмите кнопку ОК,вследствие чего произойдет запуск Построителя выражений и откроется его диалоговое окно.
Рис. 6.8. Связывание процедуры с помощью построителя выражений
В левом списке окна построителя найдите папку с функциями и выполните двойной щелчок, чтобы открыть ее. В списке категорий функций выберите функции для базы данных Почта и откройте список модулей базы, находящийся в средней части окна построителя. Затем выберите созданный нами модуль (Прейскурантные расчеты) и дважды щелкните на функции Рубли_в_Доллары (вы найдете ее в третьем списке). В верхней области окна будет сформировано выражение для вызова функции Рубли_в_Доллары:
Рубли_в_Доллары ()
Нажмите кнопку ОК, и построитель завершит свою работу, передав управление конструктору форм.
С этого момента каждое значение, введенное в поле Цена в рублях, будет автоматически пересчитано и занесено в поле Цена в долларах. Пересчет выполняется и после изменения текущего значения цены в рублях.
Примечание:
Чтобы процедура выполнялась, она должна быть скомпилирована. Этотпроцесс автоматизирован и занимает очень мало времени, но нужно быть готовым к возможному появлению сообщения об ошибке (если, конечно, ошибка будет обнаружена). Компилирование может быть произведено принудительно (если пользователь захочет проверить код на наличие ошибок) — с помощью команды Компилировать загруженные модули изменю Отладка.