我的情况是
我有一个参数,这是一个列表,允许多个值。这意味着列表中的第一条记录是“全选”
当用户选择全部时,我需要在报告中包含与列表匹配的所有记录以及空白的记录。 (我的数据集正在返回这些)
当用户只选择1个或几个时,我只想包含这些记录。没有那些空白的
我的问题: 我的数据集中有一个过滤器来评估列表中的参数,但我需要添加一个条件过滤器,以便在选择“全选”时包含空白记录 我尝试使用表达式,但这不起作用
过滤表达式
Fields!NAME.Value in = Parameters!List.Value
!!!!!!!!!!!!工作正常
但我需要像
一样改变它If Parameters!List.Value = 'Select All' Then
Fields!NAME.Value in = Parameters!List.Value or Fields!NAME.Value = " "
Else
Fields!NAME.Value in = Parameters!List.Value
End
你能给我一个建议,我可以解决它吗!!!
我在SSRS R2工作
谢谢!
答案 0 :(得分:4)
这对我有用
表达式:= IIF(参数!pLocation.Value<>“所有位置”,字段!LOCATION.Value,FALSE)
接线员:=
值:= IIF(参数!pLocation.Value<>“所有位置”,参数!pLocation.Value,FALSE)
答案 1 :(得分:2)
如果您在数据集上使用过滤器,请尝试以下操作:
Expression: [NAME]
Operator: IN
Value (fx): =Split(Replace(Join(Parameters!List.Value, ","), "Select All", " "), ",")
尝试沿着这条路走下去。基本上,您可以使用Join()将多值项重建为字符串,并使用Split()将其再次解构为数组;介于两者之间,您可以操纵它们,进行修改(例如将“全部选择”转换为“”),添加(模仿“或”)或删除多余的项目。
答案 2 :(得分:1)
还有另一种选择。
在参数数据集值中再添加一个项,将“不可用”作为标签,将值添加为null。然后,存储过程将不会发生任何变化,您可以检索数据。 如果用户选择特定项目,那么他将仅获得这些值。如果他选择了all,那么他将获得null的数据以及所有其他数据。
希望这会有所帮助
答案 3 :(得分:1)
如果你这样做,你可以把逻辑放在一个位置。 您对参数进行过滤,除非它是所有值,否则过滤器始终匹配。 只是一点清洁。
Expression:= IIF(参数!pLocation.Value<>“All Locations”,Fields!LOCATION.Value,“All Locations”)
接线员:=
值:=参数!pLocation.Value