根据参数值显示所有记录/一些记录

时间:2013-08-13 07:40:56

标签: reporting-services ssrs-2008 ssrs-2012

我有存储过程,返回大约100行。一列是Category。

在SSRS中,我创建了与该存储过程相关的DataSet。在Report body上我有Tablix,它与DataSet有关。

现在,我有一个名为FilterColumn的附加参数,它包含数据集中的所有不同类别,以及一行称为“所有产品”。

如何根据该参数过滤tablix以向我显示特定类别或所有产品的产品?

3 个答案:

答案 0 :(得分:3)

您需要设置类似于以下内容的过滤器:

enter image description here

表达式为:

=IIf(Parameters!FilterColumn.Value = Fields!Category.Value
        or Parameters!FilterColumn.Value = "All products"
    , "Include"
    , "Exclude")

根据参数值匹配行类别,或者,如果值= All products,则包含所有行。

正如评论和其他答案中所提到的,这在SP中也是可能的,但由于它似乎专门用于演示功能,因此应该在报告级别处理。

答案 1 :(得分:2)

我已经创建了一些解决方案并为我工作:

enter image description here

Expression字段中,我放了第一个表达式:

1.  Iif(Parameters!FilterColumn.Value = "All", 1, Fields!Category.Value)

Value字段中,我放了第二个表达式:

2.  Iif(Parameters!FilterColumn.Value = "All", 1, Parameters!FilterColumn.Value)

所以,当我在参数中选择“全部”值时,第一个表达式将结果为1,第二个表达式将结果为1,并且我有1 = 1,对于所有行都是如此,并且我获得了所有行表

当我从参数中选择特定类别时,第一个表达式结果将为Fields!Category.Value,第二个表达式将为Parameters!FilterColumn.Value。很简单,我得到了Fields!Category.Value = Parameters!FilterColumn.Value,或者只给了我在参数中选择类别的行。

答案 2 :(得分:0)

将附加参数传递给商店过程,以便将已排序的数据发送到报表。这将避免根据您的参数选择创建多个Tablix。