- •Министерство образования и науки Российской Федерации
- •В информационных технологиях и информационных системах
- •Часть 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.3 Добавление в существующую подчиненную форму другой подчиненной формы
Если имеется форма, содержащая подчиненную форму, то в последнюю можно добавить еще одну подчиненную форму, создав, таким образом, иерархию вложенности форм двух и более уровней, которые связаны с отношениями "один-ко-многим". Главная форма будет связана отношением "один-ко-многим" с первой подчиненной формой, а первая подчиненная форма связывается отношением "один-ко-многим" со второй подчиненной формой.
Примечание: Форма, в которую предполагается вставить подчиненную форму, должна быть типа Ленточный. Если при построении подчиненной формы с помощью Мастера был выбран параметр Табличная, включить новую подчиненную форму в эту форму будет невозможно.
Далее процедура следующая:
в главной форме в режиме конструктора формы элемент управления подчиненная форма должен быть не выбран. Установить указатель на произвольное место внутри подчиненной формы и дважды нажать кнопку мыши. Подчиненная форма открывается в режиме конструктора;
выполнить одно из следующих действий:
с помощью Мастера по созданию подчиненных форм создать вторую подчиненную форму. Для этого нужно нажать кнопку Мастера на панели элементов, нажать кнопку Подчиненная форма/отчет на панели элементов и указать в форме место, куда следует поместить подчиненную форму. Далее следовать указаниям в окнах диалога Мастера. После нажатия кнопки Готово (Finish) элемент управления Подчиненная форма добавляется в форму. Создается также отдельная форма, которая будет выводиться в границах этого элемента управления;
перенести с помощью мыши имеющуюся форму или таблицу из окна базы данных в подчиненную форму;
Внутри первой подчиненной формы создается вторая подчиненная форма.
сохранить и закрыть подчиненные формы, переключиться в режим формы для просмотра формы и подчиненных форм.
4.4 Связывание главной и подчиненной форм
При создании подчиненной формы с помощью Мастера форм, мастера подчиненных форм или путем переноса формы или таблицы с помощью мыши из окна базы данных в другую форму, главная форма автоматически синхронизируется с подчиненной формой при соблюдении двух следующих условий:
выбранные таблицы связаны отношением, представленным в окне Схема данных. Обычно это отношение "один-ко-многим". При выборе запроса или запросов форма и подчиненная форма автоматически синхронизируются, если этим условиям удовлетворяют базовые таблицы запроса или запросов. Например, запрос, базирующийся на одной таблице, можно использовать для вычисления значения поля. Если эта базовая таблица правильно связана с другой базовой таблицей или запросом, форма и подчиненная форма синхронизируются автоматически.
главная форма базируется на таблице с ключом, а подчиненная форма базируется на таблице, содержащей поле с тем же именем, что и ключевое поле, и с тем же или совместимым типом данных (внешний ключ). Например, если ключевое поле главной формы имеет тип "Счетчик", а в свойстве Размер поля задан размер Длинное целое, то соответствующее поле в подчиненной форме должно иметь тип Числовой и размер Длинное целое. Если выбран запрос или запросы, то удовлетворять этим условиям должны базовые таблицы для запроса или запросов.
Если главная форма и подчиненная форма не удовлетворяют этим условиям, пользователь имеет возможность связать их вручную. Для связывания главной и подчиненной формы используются свойства Основные поля и Подчиненные поля элемента управления Подчиненная форма. Если по каким-либо причинам форма и подчиненная форма не связаны, эти свойства можно определить через окно свойств, где требуется:
открыть главную форму в режиме конструктора.
выбрать элемент управления подчиненная форма и открыть для него окно свойств.
ввести в ячейку свойства Подчиненные поля имя связующего поля в подчиненной форме. Если неизвестно, по какому полю следует связывать подчиненную форму, нужно нажать кнопку построителя для вызова Мастера по связыванию полей. Можно ввести несколько имен связующих полей; в этом случае их следует разделять точкой с запятой. Имена полей следует указывать в одном и том же порядке в свойствах Подчиненные поля и Основные поля.
аналогично ввести в ячейку свойства Основные поля имя (имена) связующего поля в главной форме.
Связующие поля необязательно должны выводиться в главной форме или в подчиненной форме, но они должны быть включены в базовый источник записей. При создании подчиненной формы с помощью Мастера форм связующие поля из базового источника записей включаются автоматически, даже если они не были отобраны в окне диалога Мастера. Связующие поля должны содержать данные одного рода и иметь один и тот же или совместимый тип данных или размер поля. Например, поле типа "Счетчик" совместимо с полем типа Числовой, у которого свойство Размер поля (Field Size) имеет значение Длинное целое.
