На этом шаге мы начнем рассматривать организацию связи между таблицами.
Покажем, как в одной форме можно связать два набора данных (главный и подчиненный) так, чтобы в подчиненном наборе всегда показывались записи, соответствующие текущей записи в главном наборе.
Для этого создадим новое приложение, выполнив пункт меню File | New | Application. Поместим на форму два набора компонентов TTable, TDataSource, TDBGrid, TLabel. Установим для них следующие свойства (таблица 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 на какое-нибудь другое, то при попытке сохранения записи, приложение выдаст ошибку.
Созданное приложение можно взять здесь.
На следующем шаге мы закончим изучение этого вопроса.