0

我有一份 SSRS 报告,我正在对它进行动态分组。对通过报告参数提供的字段名称进行常规分组没有问题。

我遇到的问题是,如果参数为空,我想避免分组。

我尝试了本文建议使用的内容(在 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”的组表达式包含错误:表达式引用字段“”,该字段不存在于 Fields 集合中。表达式只能引用当前数据集范围内的字段,或者如果在聚合内,则只能引用指定的数据集范围。字段名称中的字母必须使用正确的大小写。(rsRuntimeErrorInExpression)

我也尝试将参数设置为“空白”,但我得到了相同的错误消息。

 =IIF(Parameters!GROUP_3.Value = "",1,Fields(Parameters!GROUP_3.Value).Value)

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

4

1 回答 1

2

Iif()调用评估传递给它的所有参数。因此,当 GROUP_3 没有值时,您试图在Iif().

有可能(虽然丑陋)用另一个嵌入的方法来解决这个问题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”,并且代码应该按照您的意愿运行。

于 2013-06-26T17:22:10.627 回答