TClientDataset в Master Detail не закрывает подробный запрос - PullRequest
2 голосов
/ 17 февраля 2012

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

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

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

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

Спасибо

1 Ответ

0 голосов
/ 25 октября 2013

Это проблема в 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 извлекал только подробные записи по требованию.
...