我有存储过程,返回大约100行。一列是Category。
在SSRS中,我创建了与该存储过程相关的DataSet。在Report body上我有Tablix,它与DataSet有关。
现在,我有一个名为FilterColumn的附加参数,它包含数据集中的所有不同类别,以及一行称为“所有产品”。
如何根据该参数过滤tablix以向我显示特定类别或所有产品的产品?
答案 0 :(得分:3)
您需要设置类似于以下内容的过滤器:
表达式为:
=IIf(Parameters!FilterColumn.Value = Fields!Category.Value
or Parameters!FilterColumn.Value = "All products"
, "Include"
, "Exclude")
根据参数值匹配行类别,或者,如果值= All products
,则包含所有行。
正如评论和其他答案中所提到的,这在SP中也是可能的,但由于它似乎专门用于演示功能,因此应该在报告级别处理。
答案 1 :(得分:2)
我已经创建了一些解决方案并为我工作:
在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。