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