如果参数为null,则SSRS动态组表达式必须为null

时间:2013-06-26 17:04:07

标签: dynamic reporting-services grouping

我有一份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)

我在这里做错了吗?有什么建议吗?

1 个答案:

答案 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”,代码应按您的意愿运行。