【问题标题】:Dynamically filtering clientdataset content动态过滤客户端数据集内容
【发布时间】:2013-03-24 01:03:06
【问题描述】:

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

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

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

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

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

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

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

任何想法将不胜感激。

问候, JP

【问题讨论】:

    标签: delphi n-tier-architecture datasnap


    【解决方案1】:

    听起来像是this etutorial 中描述的参数化查询的任务。由于每个客户端都设置了自己的参数,因此只有请求的数据会传输到每个客户端。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-25
        • 2018-06-06
        • 2018-02-25
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多