2

1 つのプロバイダーを使用して、Master Detail に 2 つの ClientDatasets があります。基礎となる 2 つのクエリはマスター詳細としてデータソースに接続され、マスターにはフィールド (TDatasetField) として詳細があります。

私の問題は、マスター (および詳細) データセットを閉じると、マスター クエリが閉じられますが、詳細が閉じられないことです...後で同じパラメーターを使用して同じクエリを再作成しようとすると、問題が発生します。

とにかく詳細クエリを閉じる必要があると思います...

助けはありますか?

ありがとう

4

1 に答える 1

0

これは、Delphi XE の問題です。すでに Quality Central (QC) 101264 にあります。EDN のフォーラムでも確認できます。

プロバイダーは、マスター データセットとリンクされた詳細データセットを自動的に開いたり閉じたりする必要があります。したがって、現在のコードはありませんので、いくつかのコメントが示唆master.close;するように a を追加できます。detail.close;IBX を使用している場合、master-detail があるとトランザクション コンポーネントでさえコミットされません (QC 107456 )。

2 つの回避策があります。

  1. detail.close;MasterDataset.OnAfterClose イベントに追加できます。これはMasterClientDataSet.onAfterCloseではないことに注意してください。
  2. Provider.Options でオプションを設定できますpoFetchDetailsOnDemand。ClientDataSet が必要に応じて詳細のレコードのみを取得することを望まない場合、これは望ましくない影響を与える可能性があります。
于 2013-10-25T13:51:51.977 に答える