我有一份SSRS报告,我正在进行动态分组。通过报表参数提供的字段名称的常规分组没有问题。
我遇到的问题是,如果参数为null,我想避免分组。
我尝试了本文建议使用的内容(在IIF语句中检查null)但它对我不起作用: http://www.optimusbi.com/2012/10/12/dynamic-grouping-ssrs/
不工作:
将GROUP_3报告参数设置为NULL并在分组表达式中检查null。
=IIF(Parameters!GROUP_3.Value is Nothing,1,Fields(Parameters!GROUP_3.Value).Value)
结果: IIF表达式似乎没有正确评估空值。我得到这个结果......
分组'GROUP_3'的组表达式包含错误: 表达式引用字段'',字段中不存在 采集。表达式只能引用当前的字段 数据集范围,或者,如果在聚合内,则指定数据集范围。 字段名称中的字母必须使用正确的大小写。 (rsRuntimeErrorInExpression)
我也尝试将参数设置为'blank',但是我得到了同样的错误信息。
=IIF(Parameters!GROUP_3.Value = "",1,Fields(Parameters!GROUP_3.Value).Value)
我在这里做错了吗?有什么建议吗?
答案 0 :(得分:2)
Iif()
调用会计算传递给它的所有参数。因此,当GROUP_3没有值时,您尝试在Iif()
的第三个参数中引用Fields集合中不存在的成员。
有可能(虽然很丑)用另一个嵌入式IIF()
解决这个问题:
IIF(Parameters!GROUP_3.Value is Nothing,1,Fields(IIF(Parameters!GROUP_3.Value is Nothing,"VALID COLUMN NAME",Parameters!GROUP_3.Value)).Value)
如果不明显,则需要使用数据集中的列名替换“VALID COLUMN NAME”。只要它始终在数据集中,它与哪个列无关。这意味着如果GROUP_3没什么,它在参数3中使用有效的列名引用只是为了绕过错误。 IIF()
调用仍会将其默认为“1”,代码应按您的意愿运行。