DataSnapを使用するDelphiクライアント サーバー アプリケーションがあります。クライアント側には、ネストされたクライアント データセットのチェーンがあります ( cdsMaster
-> cds1
-> cds2
-> cds3
)。
TDM = class(TDataModule)
cdsMaster: TClientDataSet;
cdsMaster_cds1: TDataSetField;
cds1: TClientDataSet;
cds1_cds2: TDataSetField;
cds2: TClientDataSet;
cds2_cds3: TDataSetField;
cds3: TClientDataSet;
end;
サーバー側には、マスターと詳細の関係を持つ同様のデータセットのセットがあります。
TCoDataModule = class(TRemoteDataModule, ICoDataModule)
prvMaster: TDataSetProvider;
dsMaster: TIBDataSet;
ds1: TIBTable;
ds2: TIBTable;
ds3: TIBTable;
end;
まず、コンテンツをcdsMaster
1 回 (詳細なしで) 取得し、次にオンデマンドで完全な詳細を1 つのパケットで取得する必要があります (選択したマスター レコードのcds1
、cds2
、のすべてのネストされたコンテンツ)。cds3
これを実装する最良の方法は何ですか?
poFetchDetailsOnDemand
のオプションを無効にするとprvMaster
、接続時にデータベース全体がロードされます。有効にすると、詳細レコードが 1 つずつ取得されるため、トラフィックのオーバーヘッドが大きくなり、パフォーマンスが低下します。