TClientDataset в Master Detail не закрывает подробный запрос

У меня есть 2 ClientDatasets в Master Detail, используя одного поставщика. 2 базовых запроса связаны как основная деталь с источником данных, а основная часть содержит деталь как поле (TDatasetField)

Моя проблема заключается в том, что закрытие основного (и даже подробного) набора данных закрывает главный запрос, но детали не закрываются... что вызывает проблемы, если мы пытаемся позже повторить тот же запрос с теми же параметрами.

Я думаю, что подробный запрос должен быть закрыт в любом случае...

Любая помощь?

Спасибо

1 ответ

Это проблема в Delphi XE. Это уже в Quality Central (QC) 101264. Вы также можете увидеть об этом на форуме EDN

Поставщик должен автоматически открывать или закрывать основной и связанный набор данных деталей. Так что нет текущего кода для master.close; чтобы вы могли добавить detail.close; как некоторые комментарии предполагают. Если вы используете IBX, даже компонент транзакции не фиксируется при наличии главной детали (QC 107456).

Есть два обходных пути:

  1. Вы можете добавить detail.close; в событии MasterDataset.OnAfterClose. Обратите внимание, что это не MasterClientDataSet.onAfterClose.
  2. Вы можете установить в Provider.Options параметр poFetchDetailsOnDemand, Это может иметь нежелательный эффект, если вы не хотите, чтобы ClientDataSet извлекал только подробные записи по требованию.
Другие вопросы по тегам