动态筛选客户端数据集内容



我在问自己一个关于在 3 层数据快照架构中过滤客户端数据集内容的方法的问题:Oracle DB <=> My Datasnap Server <=> My Datasnap clients

我有一个通过TDSProviderConnectionTClientDataset访问的 Oracle 表。

多个客户端正在使用数据集,其中包含一个名为 "clientId" 的字段。我希望每个客户端只请求他的行(就像 sql 语句中的WHERE clientId = 'Client1'一样)。

如果我理解正确,使用过滤器不会减少开销。

myclientdataset.Filter:= 'ClientId = Client1';
myclientdataset.Filtered:= true;

无论如何,这都会传递所有客户端。我希望服务器过滤发送的内容。

但是我不知道如何使用这些组件来完成此操作。

任何想法将不胜感激。

问候JP

听起来像是本电子教程中所述的参数化查询的任务。由于每个客户端设置自己的参数,因此仅将请求的数据传输到每个客户端。

Filter 属性筛选已加载到 ClientDataSet 中的内容。它对从基础数据库检索的数据没有任何影响。

若要使 ClientDataSet 影响从基础关系数据库检索的数据,可以在 CommandText 属性中指定查询,或者在 CommandText 属性中包含参数化查询(或存储过程调用),然后使用 Params 属性定义参数的值。

相关内容

最新更新