Шаг 35.
Работа с локальными БД в Delphi.
Создание приложения для работы с двумя таблицами

    На этом шаге мы начнем рассматривать организацию связи между таблицами.

    Покажем, как в одной форме можно связать два набора данных (главный и подчиненный) так, чтобы в подчиненном наборе всегда показывались записи, соответствующие текущей записи в главном наборе.

    Для этого создадим новое приложение, выполнив пункт меню File | New | Application. Поместим на форму два набора компонентов TTable, TDataSource, TDBGrid, TLabel. Установим для них следующие свойства (таблица 1):

Таблица 1. Значения некоторых свойств
Label1 Label2
Caption Наименование товара Caption Наличие товара
Table1 Table2
DatabaseName FIRMA DatabaseName FIRMA
TableName Naim.db TableName Naim.db
Active True Active True
DataSource1 DataSource2
DataSet Table1 DataSet Table2
DBGrid1 DBGrid2
DataSource DataSource1 DataSource DataSource2

    В результате у вас должна получиться форма, аналогичная представленной на рисунке 1.


Рис.1. Форма с двумя НД

    Если сейчас запустить программу на исполнение, обе таблицы будут независимы друг от друга. Чтобы содержимое подчиненного набора соответствовала выбору записи в главном наборе, подчиненную таблицу нужно связать с главной. Для этого свойство MasterSource таблицы Table2, установите в значение DataSource1, однако, перед этим нужно закрыть Table2, установив Active в False. Затем щелкните по правой части строки MasterFields в окне Инспектора объектов, а затем по появившейся в ней кнопке с тремя точками, чтобы раскрыть окно редактора связей. Раскройте список AvailableIndex и выберите индекс Naim. В окошке Detail Fields появится имя поля связи Naim. Выберите это же поле в окошке Master Fields и нажмите кнопку Add - связь установлена (рисунок 2).


Рис.2. Установка связи между двумя НД (окно Field Link Designer)

    Нажмите ОК и установите свойство Active компонента Table2 в True, после чего запустите приложение. Обратите внимание на тот факт, что перемещение указателя в главной таблице приводит к автоматической смене информации в отображаемых данных подчиненной таблицы.

    Изменять НД можно с помощью компонента TDBGrid. Для добавления записи нужно нажать клавишу Insert или, находясь на последней записи НД, клавишу смещения курсора вниз. Таблица автоматически перейдет в режим добавления новой записи. После ввода значений в поле записи, запомнить запись в НД можно, перейдя на другую запись при помощи клавиши управления курсором. Отказаться от запоминания записи можно клавишей ESC.

    Для изменения записи следует переместить указатель текущей записи в нужное место и изменить там значения. НД автоматически перейдет в режим редактирования.

    Для удаления записи следует установить на нее указатель и нажать Ctrl+Del.

    При добавлении записи в подчиненный НД поле Naim определяется самостоятельно, его значение зависит от того, на какой записи находится указатель в главном НД. Если изменить значение поле Naim на какое-нибудь другое, то при попытке сохранения записи, приложение выдаст ошибку.

    Созданное приложение можно взять здесь.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг