首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Delphi DataSnap中获取多个嵌套数据集

在Delphi DataSnap中获取多个嵌套数据集
EN

Stack Overflow用户
提问于 2016-11-25 07:08:54
回答 1查看 526关注 0票数 0

我有Delphi客户机服务器应用程序,它使用DataSnap。在客户端,我有一系列嵌套的客户端数据集(cdsMaster -> cds1 -> cds2 -> cds3)。

代码语言:javascript
复制
TDM = class(TDataModule)
  cdsMaster: TClientDataSet;
  cdsMaster_cds1: TDataSetField;
  cds1: TClientDataSet;
  cds1_cds2: TDataSetField;
  cds2: TClientDataSet;
  cds2_cds3: TDataSetField;
  cds3: TClientDataSet;
end;

在服务器端,我有一组具有主细节关系的类似数据集。

代码语言:javascript
复制
TCoDataModule = class(TRemoteDataModule, ICoDataModule)
  prvMaster: TDataSetProvider;
  dsMaster: TIBDataSet;
  ds1: TIBTable;
  ds2: TIBTable;
  ds3: TIBTable;
end;

首先,我需要获取一次cdsMaster的内容(没有细节),然后根据需要在单个数据包中获取全部细节( cds1cds2cds3的所有嵌套内容用于选定的主记录)。实现这一点的最佳方法是什么?

如果我为poFetchDetailsOnDemand禁用选项prvMaster,它将在连接时加载整个数据库。如果我启用它,它会一个接一个地获取详细记录,造成巨大的流量开销和性能下降。

EN

回答 1

Stack Overflow用户

发布于 2016-12-01 08:46:12

我会亲自添加参数,以指示要在主客户端数据集上检索的记录或记录范围,并禁用poFetchDetailsOnDemand,以便它将返回主表中选择的少数记录的完整详细信息。

这样,您就不会一个接一个地获取详细信息,也不会加载整个数据库,只加载所需的主记录/s及其所有详细信息。

示例:将主客户端Example从类似于、SELECT*和的内容更改为类似于SELECT *的对象,其中ID = :ID

PS:如果您还需要完整的主记录列表,而不需要详细信息,则可以将它们加载到单独的客户端数据集中。通过这种方式,您可以在网格上显示所有可能的主记录,当用户选择查看详细信息时,您可以打开第二个clientataset,它将加载包含所有详细信息的完整主记录(而且只有该记录)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40799470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档