- •Министерство образования и науки Российской Федерации
- •В информационных технологиях и информационных системах
- •Часть 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 Создание форм на основе нескольких таблиц или многотабличных запросов
Используя взаимосвязь данных в базе, можно строить запросы, которые позволяют извлекать и обобщать информацию из разных таблиц. Разработанные на основе подобных запросов формы позволяют одновременно просматривать и редактировать несколько таблиц. Такие формы имеют сложную структуру и состоят из главной и вложенной в нее подчиненной форм.
Формы со сложной структурой можно создать и на основе нескольких таблиц. Создание таких форм показано на рисунках. Сначала выбираются необходимые поля из разных таблиц, затем выбирается таблица, поля которой будут находиться на родительской форме, а далее форма создается обычным образом.
4.1 Создание подчиненных форм
Создадим форму для просмотра разговоров каждого абонента. Форма создается с помощью Мастера форм. В первом окне (Рисунок 4.1) выбираются нужные поля из разных таблиц:
из таблицы «Абонент» – Фамилия, Имя и Номер телефона;
из таблицы «Город» – Название города и Тариф;
из таблицы «Разговор» – Дата разговора и количество минут.
В
следующем окне (Рисунок 4.2) нужно
определить, какая из форм будет основной
(роди-тельской). Для того, чтобы получить
информацию о разговорах каждого абонента,
родительской должна быть таблица
Абонент. Для подчиненной формы выбирается
режим Ленточная
форма.
Полученная форма представлена на Рисунке 4.3.
Форма состоит из двух форм: родительской, или главной Абонент и подчиненной Разговор. Это хорошо видно на Рисунке 4.4, где полученная форма показана в режиме конструктора.
Внимание! Как родительская, так и подчиненная формы имеют свои свойства, и это надо учитывать при модификации форм в режиме конструктора.
П
олученная
форма имеет незаконченный вид. Во-первых,
здесь нет поля для расчета суммы за
каждый разговор, во-вторых, отсутствует
общая сумма, которую должен абонент за
все разговоры, а в-третьих, удобнее
фамилию абонента выбирать из Поля
со списком.
Кроме того, для закрытия формы необходимо
поместить на эту форму соответствующую
кнопку.
Поэтому после создания формы ее нужно отредактировать в режиме конструктора.
В
первую очередь поле, где содержится
фамилия абонента, заменяется Полем
со списком
для более удобного выбора информации
о нужном абоненте. Элемент Поле
со списком
выбирается ни панели элементов при
нажатой кнопке мастера.
При создании Поля
со списком
на родительской форме в первом открывшемся
окне (Рисунок 4.5) нужно выбрать опцию
«Поиск записи
в форме на основе значения, которое
содержит поле со списком»,
так как записи, отображаемые в подчиненной
форме, должны соответствовать выбранной
фамилии абонента на родительской форме.
В следующем окне выбираются поля, которые
станут столбцами поля со
списком –
Код абонента
и Фамилия
(можно выбрать
только поле Фамилия,
ключевое поле Код
абонента
присоединяется автоматически). Полученное
Поле со
списком
показано на рисунке 4.6.
Затем удаляются все лишние элементы, загромождающие форму, такие как Область выделения, кнопки перехода, разделительные линии.
И, наконец, на форме также должны находиться вычисляемые поля, в которых будет отражаться стоимость каждого междугороднего разговора и общая сумма для выбранного абонента.
