Есть две таблицы (не связанные между собой): PL и ОТ.
В таблице PL есть PrimaryKey(NO_PL, DT_PL).
В таблице OT - PrimaryKey(NO_PL, DT_OTL, NO_OTL).
где
NO_PL (varchar), DT_PL(date), DT_OTL (date), NO_OTL(varchar).
DT_PL и DT_OTL имеют одинаковые значения даты (используются для связи таблиц совместно с NO_PL).
Связь между таблицами осузествляется программно следующим образом:
Таблица PL (Поля (NO_PL, DT_PL)) <---> Таблица OT (Поля (NO_PL, DT_OTL))
На форме есть следующие компоненты:
Код: Выделить всё
TIBDatabase IBDatabase;
TIBTransaction IBTransaction;
TIBDataSet IBDataSetPL, IBDataSetOT;
TDataSource DataSourcePL, DataSourceOT;
TDBGrid DBGridPL, DBGridOT;
Код: Выделить всё
IBDatabase(DefaultTransaction=IBTransaction)
IBTransaction(DefaultDatabase=IBDatabase)
DataSourcePL(DataSet=IBDataSetPL)
DataSourceOT(DataSet=IBDataSetOT) >IBDataSetOT;
DBGridPL(DataSource=DataSourcePL)
DBGridOT(DataSource=DataSourceOT)
Код: Выделить всё
FormMain->IBDataSetOT->Insert();
FormMain->IBDataSetOT->FieldByName("NO_PL")->AsString = Trim(LabEd_NoPL->Text);
FormMain->IBDataSetOT->FieldByName("DT_PL")->AsDateTime = DT_Plavki->Date;
...
FormMain->IBDataSetOT->Post();
Close();
Программный код добавления записей в таблицу OT
Код: Выделить всё
FormMain->IBDataSetOT->Insert();
FormMain->IBDataSetOT->FieldByName("NO_PL")->AsString = Trim(LabEd_NoPL->Text);
FormMain->IBDataSetOT->FieldByName("DT_ZALIV")->AsDateTime = DT_Plavki->Date;
FormMain->IBDataSetOT->FieldByName("NO_OTL")->AsString = Trim(LabEd_OTL->Text);
...
FormMain->IBDataSetOT->Post();
Close();
Таким образом я попытался связать эти таблицы без использования вторичного ключа.
При выборе записи в таблице PL в таблице ОТ отображаются записи относящиеся к выбранной записи в таблице PL (по принцыпу мастер-деталь), а вот добавление не получается.
Пожалуйста Объясните, что я сделал не так, и как это можно разрешить.
Спасибо.