Связанные таблицы
В рамках одного проекта таблицы БД можно связывать отношениями "один-ко-многим" и "многие-ко-многим", при этом отношения обязательно устанавливаются между индексированными полями двух таблиц.
При создании отношений в качестве главной таблицы можно использовать любой компонент, инкапсулирующий набор данных. Для задания подчиненной таблицы можно использовать только табличные компоненты (см. гл. 12).
Отношение "один-ко-многим"
Для установления отношения "один-ко-многим" в наборе данных предназначены два свойства – 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 – все связи.
После создания связей между полями отношение "один-ко-многим" считается установленным. Теперь достаточно открыть оба набора данных, чтобы увидеть работу отношения.