Иллюстрированный самоучитель по Kylix

       

Содержимое файла базы данных



Листинг 18.2. Содержимое файла базы данных

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

- <DATAPACKET Version="2.0">

- <METADATA>

- <FIELDS>

<FIELD attrname="ID" fieldtype="i4" readonly="true" SUBTYPE="Autoinc" />

<FIELD attrname="Name" fieldtype="string" WIDTH="50" />

- <FIELD attrname="0rders" fieldtype="nested">

- <FIELDS>

<FIELD attrname="ID" fieldtype="i4" SUBTYPE="Autoinc" />

<FIELD attrname="OrderName" fieldtype="string" WIDTH="20" />

<FIELD attrname="Price" fieldtype="r8" SUBTYPE="Money" />

</FIELDS>

<PARAMS AUTOINCVALUE="1" />

</FIELD>

</FIELDS>

<PARAMS DEFAULT_ORDER="" AUTOINCVALUE="1" />

</METADATA>

<ROWDATA />

</DATAPACKET>

Нетрудно убедиться в том, что поле Оrders содержит в себе описание подчиненной таблицы. При этом в сетке данных DBGrid1, расположенной на главной форме, появился новый столбец Оrders. При запуске приложения и попытке редактирования этого поля автоматически открывается форма для редактирования вложенного набора данных.

Другим способом организации взаимодействия с вложенным набором данных является размещение в модуле данных дополнительного клиентского набора данных ClientDataSet. Поместим в модуль данных еще один компонент типа TClientDataSet, установив его имя orders. Свойству DataSetField компонента Orders из раскрывающегося списка присвоим значение ClientsOrders. Теперь, пользуясь компонентом Оrders, можно просматривать и редактировать вложенный набор данных.

Достоинства вышеописанного метода в том, что вся база будет храниться в одном xml-файле, недостаток — в том, что нельзя разорвать связь главный-подчиненный и, как следствие, одновременно посмотреть все записи о заказах вне зависимости от выбранного клиента.



Содержание раздела