【问题标题】:How to filter a tablix based on paramater but no filter when paramater is null?如何根据参数过滤tablix,但当参数为空时不过滤?
【发布时间】:2019-06-14 17:40:38
【问题描述】:

我有一个 tablix,其中的数据来自 dataset ,有一个名为 Productgroup 的列,可能有一些用户想要对其应用过滤器。

我正在尝试构建一个 ssrs 表达式,该表达式将在该特定列上过滤我的 tablix,但仅当名为 @Filter 的参数不为 null 时,如果为 null ,则不需要应用过滤器

我试过了 表达:产品组 运营商:喜欢 值:=IIF(IsNothing(Parameters!Filter.Value), false, Fields!ProductGroup=Parameters!Filter.Value)

似乎没有任何效果:(

【问题讨论】:

    标签: reporting-services ssrs-tablix


    【解决方案1】:

    首先,最好将参数发送到数据集并在服务器上进行过滤,而不是带回所有数据并在客户端进行过滤。所以这意味着参数化你的存储过程,或者使用 WHERE 子句来过滤你正在连接的表/视图。

    如果你坚持这种方法:

    您希望您的表达式为“ProductGroup”。

    您希望您的运算符为“=”。

    你希望你的价值是=IIF(IsNothing(Parameters!paramFilter.Value), Fields!Productgroup.Value, Parameters!paramFilter.Value)

    您所做的是说如果参数为空,我需要 ProductGroup 等于 ProductGroup。这总是正确的。但如果参数不为空,则ProductGroup必须等于参数值。

    【讨论】:

    • 感谢 cgoll ,当他们确切地知道他们想要的产品名称或代码时,这将起作用,但是当他们只知道其中的一部分时,我试图让它起作用。由于这个原因,我尝试使用“like”而不是“=”,但似乎 ssrs like 与 sql“%like%” 语句的工作方式不同
    • 即使使用 like 运算符,您也应该能够使用我提供的值。关键是,如果参数为空,则与 ProductGroup 本身进行比较。在您的原始值中,如果参数为空,您会将 ProductGroup 与 false 进行比较。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    相关资源
    最近更新 更多