动态过滤clientdataset内容

时间:2012-05-06 16:53:15

标签: delphi n-tier-architecture datasnap

我问自己一个关于在3层数据分析架构中过滤clientdataset内容的方法的问题:Oracle DB <=> My Datasnap Server <=> My Datasnap clients

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

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

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

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

因为这通过了所有客户端。我希望服务器过滤发送的内容。

但我不知道如何使用这些组件来实现这一目标。

任何想法都将不胜感激。

此致 JP

2 个答案:

答案 0 :(得分:2)

听起来像参数化查询的任务,如this etutorial中所述。当每个客户端设置自己的参数时,只将请求的数据传输到每个客户端。

答案 1 :(得分:0)

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

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