|
Отношение "один- ко- многим"
Для установления отношения "один-
ко- многим" в наборе данных предназначены два свойства
— Mastersource и MasterFieids,
которые задаются для подчиненной таблицы. Набор данных
главной таблицы не требует никаких дополнительных настроек
и заданная связь будет работать только при перемещениях
по записям главной таблицы.
Свойство Mastersource
определяет компонент TDataSource,
который связан с главной таблицей.
Затем при помощи свойства
MasterFieids необходимо установить отношения
между полями главной и подчиненной таблицы. В нем содержится
имя индексированного поля, по которому устанавливается
связь. Если таких полей несколько, их имена разделяются
точкой с запятой. При этом не все поля, входящие в индекс,
обязаны участвовать в создании отношения.
Для задания свойства MasterFields
можно использовать Редактор связей полей (Field
Link Designer), который вызывается щелчком на
кнопке в поле редактирования этого свойства в Инспекторе
объектов (рис. 14.1).
Рис. 14.1. Редактор
связей полей
Здесь в разворачивающемся списке Available
Indexes выбирается требуемый индекс для подчиненной
таблицы. После этого в списке Detail Fields появляются
имена всех полей, входящих в этот индекс. В списке Master
Fields отображаются все поля главной таблицы.
Теперь требуется создать связи между
полями. Для этого в левом списке выбирается поле подчиненной
таблицы, а затем соответствующее ему поле главной таблицы
в правом списке. После этого активизируется кнопка Add,
щелчок на которой создает отношение по двум полям главной
и подчиненной таблиц. Созданная связь отображается в
списке Joined Fields.
Примечание
После создания связи по индексированным
полям данный индекс становится текущим для набора
данных. При этом в зависимости от типа СУБД автоматически
заполняется свойство indexName
или indexFieldNames.
Уже созданные связи можно удалить.
Кнопка Delete удаляет выбранную связь, кнопка
Clear — все связи.
После создания связей между полями
отношение "один- ко- многим" считается установленным.
Теперь достаточно открыть оба набора данных, чтобы увидеть
работу отношения.
В качестве примера рассмотрим проект
DemoJoins, в котором связываются таблицы из демонстрационной
базы данных DBDEMOS. Для этого использованы компоненты
ADO, подробнее о которых вы можете узнать из гл. 19.
Таблица Customers
представлена в наборе данных компонента CustTable,
она содержит данные о покупателях. Таблица
Orders представлена в наборе данных компонента
ordTable, она содержит данные
о заказах. Таблица Employee представлена
в наборе данных компонента ЕmpТаblе,
она содержат данные о продавцах (табл. 14.2).
Примечание
Приложение DemoJoins не содержит
дополнительного исходного кода. Все отношения между
таблицами заданы при помощи Инспектора объектов.
Отношение "один- ко- многим"
задано между таблицами покупателей (Customers)
и заказов (Orders). Таблица покупателей
является главной. Для создания отношения установлены
следующие значения свойств компонента ordTable
(подчиненная таблица).
Свойство MasterSource
должно указывать на компонент custsource,
связанный с набором данных CustTable.
Свойство MasterFields
указывает на поле custNo таблицы
Customers.
В наборе данных OrdTable
включен вторичный индекс на основе поля CustNo
(indexName = 'CustNo').
Рис. 14.2. Главная
форма проекта DemoJoins
Таким образом, две таблицы связаны
отношением "один- ко- многим" по индексированным
полям custNo (номер покупателя).
В результате, при перемещении по записям таблицы покупателей,
в таблице заказов будут показаны только те заказы, которые
относятся к текущему покупателю
|