Вычисления в каждой записи формы. Чтобы произвести вычисления на основе данных одной записи в форме, необходимо создать вычисляемый элемент управления, в который записывается выражение. Для создания вычисляемого элемента управления надо открыть форму в режиме Конструктор и, нажав на панели элементов кнопку Поле (аб|)разместить вычисляемый элемент управления в нужном месте. Затем в объект свободный вносится выражение, в объект поле надпись. Выражение должно начинаться со знака равенства (=). В качестве операндов выражения чаще всего используются имена полей, константы, а в качестве операторов – знаки арифметических операций.
Рассмотрим пример создания вычисляемого поля. Пусть таблица или запрос, на которых строится форма, содержит данные о сдаче экзаменов за последнюю сессию и имеет поля: ФИЗИКА, МАТЕМАТИКА, ПРОГРАММИРОВАНИЕ, ИНЖЕНЕРНАЯ ГРАФИКА. В форме нужно подсчитать средний балл каждого студента, создав вычисляемый элемент управления и записав в него выражение:
=([ФИЗИКА]+[МАТЕМАТИКА]+
[ПРОГРАММИРОВАНИЕ]+[ИНЖЕНЕРНАЯ ГРАФИКА])/4
Для объекта с именем Свободный вызывают контекстное меню, выбирают пункт меню Свойства, вкладку Данные, строку Данные. При этом можно внести формулу в строке Данныевручную, а можно воспользоваться кнопкой Построитель выражений (…), которая находится в данной строке. В окне построителя выражений имеется панель кнопок с различными операторами и есть возможность выбрать из списка нужные поля (активизировав во второй нижней части окна строку <список полей>) и функции.
Пересчет одних полей при изменении других полей в каждой записи формы. В данном случае пересчет одних полей надо связать с возникновением события, связанного с изменением других полей.
Пример 1. Пусть имеется две таблицы ПОСТАВКА и СКЛАД, требуется при вводе новой записи в таблицу ПОСТАВКА увеличивать поле ОСТАТОК в таблице СКЛАД на величину введенного количества. Порядок действий следующий:
создать с помощью мастера форм форму, в которой отразить все поля из таблицы ПОСТАВКА и поле ОСТАТОК из таблицы СКЛАД;
открыть созданную форму в режиме конструктора;
выделить поле КОЛИЧЕСТВО, открыть окно свойств для данного поля (кнопка Свойства на панели инструментов или контекстное меню, пункт Свойства);
в окне свойств выбрать вкладку События, щелкнуть в строке После обновления, щелкнуть по кнопке Построитель выражений, выбрать пункт меню Программы, щелкнуть по кнопке ОК; при этом мы попадаем в процедуру обработки события, связанного с обновлением поля КОЛИЧЕСТВО;
набрать оператор присваивания
[ОСТАТОК]=[ОСТАТОК]+[КОЛИЧЕСТВО]
сохранить процедуру, закрыть окно процедуры и окно свойств, сохранить форму, выйти из режима конструктора.
Пример 2. Пусть имеется две таблицы НАЗНАЧЕНИЕ НА РЕЙС и ТИПЫ САМОЛЕТОВ. Необходимо, чтобы при внесении записи в таблицу НАЗНАЧЕНИЕ НА РЕЙС поле КОЛИЧЕСТВО МЕСТ автоматически заполнялось и равнялось аналогичному полю из таблицы ТИПЫ САМОЛЕТОВ. Автоматическое заполнение пусть происходит при заполнении поля НОМЕР САМОЛЕТА. Порядок действий следующий:
создать с помощью мастера форм форму для ввода данных в таблицу НАЗНАЧЕНИЕ НА РЕЙС и дополнительно выбрать поле КОЛИЧЕСТВО МЕСТ из таблицы ТИПЫ САМОЛЕТОВ (если таблицы не связаны между собой, то необходимо выбрать поле связи из третьей таблицы, через которую связаны первые две);
отобразить созданную форму в режиме конструирования;
выделить поле НОМЕР САМОЛЕТА, открыть окно его свойств, выбрать вкладку События, строку После обновления, щелкнуть по кнопке Построитель выражений, выбрать пункт меню Программы и щелкнуть по кнопке ОК;
набрать в теле процедуры оператор приcваивания
[НАЗНАЧЕНИЕ НА РЕЙС_КОЛИЧЕСТВО МЕСТ]=
[ТИПЫ САМОЛЕТОВ_КОЛИЧЕСТВО МЕСТ]
сохранить процедуру, закрыть окно процедуры и окно свойств, сохранить форму, выйти из режима конструктора.