![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать чтобы изменения сохранялись в определенном порядке?
Dzhon © (2004-05-05 20:53:00)Добрый вечер мастера! Я понимаю, что как я делать неправильно, но уже поздно. Вопрос такой: Есть 3 ClientDataSet'a, из них один главный, а два других входят в него (TDataSetField). Подчиненные ClienDataSet'ы соотносятся с двумя таблицами из БД, которые подчинены друг другу. Когда я делаю у главного ClientDataSet.ApplyUpdates() вылетает ошибка целостности БД. Когда делаю поочередно ApplyUpdates начиная с младшего, вылетает та же ошибка. Похоже обновление данных проходит за одну транзакцию. Можно как то этого избежать и сохранять данные каждого ClientDataSet'a поочередно?
Спасибо!
Dzhon (2004-05-05 23:40:00) [1]База - Informix
Применение ClientDataSet - потому что через DbExpress
Завтра опишу все подробнее:
Есть три компонента ClientDataSet1, ClientDataSet2, ClientDataSet3
У компонента ClientDataSet1 два поля типа TDataSetField: DataSetField1 и DataSetField2
ClientDataSet2.DataSetField = DataSetField1
ClientDataSet3.DataSetField = DataSetField2
В БД 3 таблицы Table1, Table2, Table3. Таблица Table2 связана с Table1. Таблица Table3 связана с Table2.
CREATE TABLE T1 (id1 INT);
ALTER TABLE T1 ADD PRIMARY KEY id1;
CREATE TABLE T2 (id1 INT, id2 INT);
PRIMARY KEY (id1, id2);
FOREIGN KEY REFERENCES T1;
CREATE TABLE T3 (id1 INT, id2 INT, id3 INT);
PRIMARY KEY (id1, id2, id3);
FOREIGN KEY REFERENCES T1;
И вот: когда записи добавляются одновременно во все три датасета возникает ошибка целостности базы. Как мне сделать что бы сначала записывался ClientDataSet1, потом ClientDataSet2, а затем ClientDataSet3?
Курдль (2004-05-05 22:08:00) [2]Сумбурно написано. А что за база? Чем вызвано применение ClientDataSet'a?
Для удаления гланд через рот обычно делают так (insert):
DB.ApplyUpdates([MasterDataSet, DetailDataSet1, ... DetailDataSetN]);
где DB - компонент, определяющий сессию доступа к БД.