如果我有一个允许多项选择的报告参数(@Fruit
),如何将该参数用作SSRS矩阵中的列组?
通常,我会在查询中使用该参数,如下所示:
WHERE tbl.fruit In ( @Fruit )
然后我会使用数据集中的列作为我的组。但是,在这种情况下,我需要返回完整的数据集。我无法过滤查询,但我仍然只想显示参数选择的组。如果我的查询返回Apples,Oranges和Bananas,但参数只选择Apples和Oranges,我的tablix应该只有2列。
我尝试将Group By表达式设置为=Parameters!Fruit.Value
,但后来我收到此错误:
分组'ColumnGroup'时使用的Group表达式返回了一个数据 类型无效。 (rsInvalidExpressionDataType)
我的参数类型是文字,我尝试过它,不允许空白值。
答案 0 :(得分:5)
因此,似乎您希望根据多值参数中的选定值过滤报表对象,@Fruit
?
如果如您所说,您无法在数据集查询/存储过程中应用过滤器,则可以在Tablix级别应用过滤器,如:
表达式为:
=IIf(InStr(Join(Parameters!Fruit.Value, ","), Fields!Fruit.Value)) > 0
, "INCLUDE"
, "EXCLUDE")
基本上这是使用JOIN函数来获取所选值的逗号分隔列表,然后检查对象数据集中的 Fruit 字段是否在该列表中;如果是的话,包括它。