Иллюстрированный самоучитель по Delphi 7 для профессионалов

Связанные таблицы

В качестве примера рассмотрим проект 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').

Иллюстрированный самоучитель по Delphi 7 для профессионалов › Механизмы управления данными › Связанные таблицы
Рис. 14.2. Главная форма проекта DemoJoins

Таким образом, две таблицы связаны отношением "один-ко-многим" по индексированным полям custNo (номер покупателя). В результате, при перемещении по записям таблицы покупателей, в таблице заказов будут показаны только те заказы, которые относятся к текущему покупателю.

Отношение "многие-ко-многим"

Отношение "многие-ко-многим" отличается тем, что подчиненная таблица еще раз связывается в качестве главной с другой подчиненной таблицей аналогичной последовательностью действий, как и в отношении "один-ко-многим".

В приложении DemoJoins отношением "многие-ко-многим" связаны таблицы заказов (Orders) и продавцов (Employee). Таблица заказов уже работает в отношении "один-ко-многим" в качестве подчиненной.

В наборе данных ЕтрТаblе заданы следующие свойства:

  • свойство MasterSource указывает на компонент Empsource;
  • свойство MasterFields содержит имя поля EmpNo, по которому осуществляется связь между таблицами. Для подчиненной таблицы поле EmpNo является первичным.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.