- •Министерство образования и науки Российской Федерации
- •В информационных технологиях и информационных системах
- •Часть II
- •1. Особенности проектирования многотабличных баз данных
- •2 Определение связей между таблицами
- •2.1 Объединения
- •2.2 Ограничения и поддержание целостности данных
- •2.2.1 Ограничения в базе данных
- •2.2.2 Поддержание целостности данных
- •2.3 Связывание таблиц
- •2.4 Создание форм для ввода данных
- •3 Многотабличные запросы
- •4 Создание форм на основе нескольких таблиц или многотабличных запросов
- •4.1 Создание подчиненных форм
- •4.2 Вычисление итоговых значений
- •4.3 Добавление в существующую подчиненную форму другой подчиненной формы
- •4.4 Связывание главной и подчиненной форм
- •4.5 Всплывающие формы и окна диалога
- •5 Макросы и модули
- •6 Создание интерфейса
- •Задания для самостоятельной работы
- •Литература
- •Часть II
- •610000, Киров, ул. Ленина, 104
4.2 Вычисление итоговых значений
Прежде, чем вычислять итоговую сумму, нужно рассчитать стоимость каждого разговора. Для подсчета суммы за каждый разговор, в области данных подчиненной формы с помощью Построителя выражений добавляется поле (в данном примере [Поле8]), в которое записывается выражение =[Тариф]*[Количество минут].
Вычисляемые элементы управления могут использоваться для включения итогового поля в запись формы, для вычислений различных итогов с выводом в главной или подчиненной форме. В форме, содержащей подчиненную форму, допускается расчет итогового значения для групп записей. Главная форма и ее подчиненная форма имеют базовые таблицы с отношением "один-ко-многим". В главной форме выводятся записи со стороны "один"; в подчиненной форме выводятся записи со стороны "многие". Для случая расчета суммарного значения подчиненной формы следует добавить поле в область примечаний подчиненной формы и ввести в ячейку свойства Данные выражение, содержащее функцию Sum. Например, следующее выражение возвращает общее количество минут разговоров для абонента в форме Разговор:
=Sum([Количество])
Е
сли
в расчете итогового значения требуется
использовать значение из вычисляемого
элемента управления, указания одного
имени элемента управления в аргументе
функции Sum
будет недостаточно. Например, если
имеется элемент управления, в котором
рассчитывается произведение значений
полей Количество
и Тариф
(в
примере это Поле8 на рисунке 7.6), то при
расчете, тем не менее, следует указать
(в Поле11 на рисунке 7.6) полное выражение
=Sum([Количество]*[Тариф]),
то есть, для расчета итоговой суммы
нельзя записать выражение =Sum([Поле8]).
Поэтому выражения, содержащие статистические функции, такие как Sum, лучше определять в базовом запросе формы или в базовой инструкции SQL. В этом случае использование имени вычисляемого поля в функции Sum допустимо. Например, можно определить вычисляемое поле в запросе с помощью выражения Сумма долга: [Количество]*[Тариф], а затем включить имя вычисляемого поля в выражение для суммарного значения:
=
Sum([Сумма
долга] ).
Создание вычисляемых полей в подчиненной форме показано на рисунке 4.6. Обновленная форма для просмотра разговоров каждого абонента – на рисунке 4.7.
Чтобы вывести итоговое значение в главной форме, следует создать в главной форме поле, в котором с помощью выражения создаётся ссылка на вычисляемое поле в подчиненной форме. Например, для определения свойства Данные в главной форме можно использовать выражение следующего вида:
=[Имя_подчиненной_формы].[Form]![Поле_подчиненной_формы]
П
ри
подведении итогов бывает необходимо в
итоговом поле, находящемся в подчиненной
форме, использовать поле из главной
формы. В таком случае создается ссылка
на вычисляемое поле в главной форме:
= Forms![Имя_главной_формы]! [Поле_главной_формы]
Например, нужно создать форму, в которой подводятся итоги по городам (рисунок 4.8). В такой форме главная форма содержит поле Тариф, а подчиненная форма содержит поле Количество минут. Для подведения итогов в области примечания подчиненной формы создается поле (рисунок 4.9, поле13), в которое записывается выражение:
=Sum([Количество_минут])*Forms!Город!Тариф
При
создании формы с двумя подчиненными
формами с помощью Мастера синхронизация
подчиненных форм осуществляется
посредством автоматически создаваемой
процедуры обработки события Текущая
запись
(Current)
первой
подчиненной формы. Если требуется
синхронизовать несколько подчиненных
форм разного уровня в одной и той же
форме, можно скопировать и соответствующим
образом изменить эту процедуру обработки
события. Для просмотра этой процедуры
можно открыть первую подчиненную форму
в режиме конструктора, двойным нажатием
кнопки мыши в области выделения формы
открыть ее окно свойств, а затем нажать
кнопку построителя
в
строке свойства Текущая
запись.
