TClientDataset в Master Detail не закрывает подробный запрос
У меня есть 2 ClientDatasets в Master Detail, используя одного поставщика. 2 базовых запроса связаны как основная деталь с источником данных, а основная часть содержит деталь как поле (TDatasetField)
Моя проблема заключается в том, что закрытие основного (и даже подробного) набора данных закрывает главный запрос, но детали не закрываются... что вызывает проблемы, если мы пытаемся позже повторить тот же запрос с теми же параметрами.
Я думаю, что подробный запрос должен быть закрыт в любом случае...
Любая помощь?
Спасибо
1 ответ
Это проблема в Delphi XE. Это уже в Quality Central (QC) 101264. Вы также можете увидеть об этом на форуме EDN
Поставщик должен автоматически открывать или закрывать основной и связанный набор данных деталей. Так что нет текущего кода для master.close;
чтобы вы могли добавить detail.close;
как некоторые комментарии предполагают. Если вы используете IBX, даже компонент транзакции не фиксируется при наличии главной детали (QC 107456).
Есть два обходных пути:
- Вы можете добавить
detail.close;
в событии MasterDataset.OnAfterClose. Обратите внимание, что это не MasterClientDataSet.onAfterClose. - Вы можете установить в Provider.Options параметр
poFetchDetailsOnDemand
, Это может иметь нежелательный эффект, если вы не хотите, чтобы ClientDataSet извлекал только подробные записи по требованию.