master-detail on DataSnap
Добавлено: 18 апр 2005, 18:00
Здравствуйте!
Есть проблема:
используется FIB-FB 1.5.1
2 таблицы:
CREATE TABLE PERSON (
ID_HUMAN DNKEY ,
DATEEND DATE NOT NULL,
DATEBEGIN DATE NOT NULL,
... some other fields
);
ALTER TABLE PERSON ADD PRIMARY KEY (ID_HUMAN, DATEBEGIN, DATEEND);
=============
CREATE TABLE ABITURIENT (
ID_HUMAN DNKEY ,
DATEBEGIN DATE NOT NULL,
DATEEND DATE NOT NULL,
ID_ABITURIENT DNKEY
);
ALTER TABLE ABITURIENT ADD PRIMARY KEY (ID_ABITURIENT);
ALTER TABLE ABITURIENT ADD FOREIGN KEY (ID_HUMAN, DATEBEGIN, DATEEND)
REFERENCES PERSON (ID_HUMAN, DATEBEGIN, DATEEND);
datasetPerson - master, datasetAbiturient - detail
На сервере (RemoteDataModule) 2 TpFIBDataSet'a связаны через DataSource.
У datasetAbiturient в Select стоит
WHERE ID_HUMAN=:ID_HUMAN and DATEBEGIN=:DATEBEGIN and DATEEND=:DATEEND
у datasetAbiturient в AutoUpdateOptions выставлен генератор на поле
ID_ABITURIENT.
На клиенте 2 pFIBClientDataSet'a также связаны через MasterSource.
Теперь, если в MasterDBGrid попытаться встать на строку, отличную от первой
и для которой в detail _ничего нет_, то происходит ошибка "Key Violation".
Если на сервере обнулить AutoUpdateOptions, то ошибки нет!
Где копать?
Всего доброго,
Антон
Есть проблема:
используется FIB-FB 1.5.1
2 таблицы:
CREATE TABLE PERSON (
ID_HUMAN DNKEY ,
DATEEND DATE NOT NULL,
DATEBEGIN DATE NOT NULL,
... some other fields
);
ALTER TABLE PERSON ADD PRIMARY KEY (ID_HUMAN, DATEBEGIN, DATEEND);
=============
CREATE TABLE ABITURIENT (
ID_HUMAN DNKEY ,
DATEBEGIN DATE NOT NULL,
DATEEND DATE NOT NULL,
ID_ABITURIENT DNKEY
);
ALTER TABLE ABITURIENT ADD PRIMARY KEY (ID_ABITURIENT);
ALTER TABLE ABITURIENT ADD FOREIGN KEY (ID_HUMAN, DATEBEGIN, DATEEND)
REFERENCES PERSON (ID_HUMAN, DATEBEGIN, DATEEND);
datasetPerson - master, datasetAbiturient - detail
На сервере (RemoteDataModule) 2 TpFIBDataSet'a связаны через DataSource.
У datasetAbiturient в Select стоит
WHERE ID_HUMAN=:ID_HUMAN and DATEBEGIN=:DATEBEGIN and DATEEND=:DATEEND
у datasetAbiturient в AutoUpdateOptions выставлен генератор на поле
ID_ABITURIENT.
На клиенте 2 pFIBClientDataSet'a также связаны через MasterSource.
Теперь, если в MasterDBGrid попытаться встать на строку, отличную от первой
и для которой в detail _ничего нет_, то происходит ошибка "Key Violation".
Если на сервере обнулить AutoUpdateOptions, то ошибки нет!
Где копать?
Всего доброго,
Антон