Dynamic 如果参数为null,则SSRS动态组表达式需要为null

Dynamic 如果参数为null,则SSRS动态组表达式需要为null,dynamic,reporting-services,grouping,Dynamic,Reporting Services,Grouping,我有一份SSRS报告,我正在对其进行动态分组。对通过报表参数提供的字段名进行常规分组不会出现任何问题 我遇到的问题是,如果参数为null,我希望避免分组 我尝试了本文建议使用的方法(在IIF语句中检查null),但它对我不起作用: 不工作: 将GROUP_3报告参数设置为NULL,并在分组表达式中检查NULL =IIF(Parameters!GROUP_3.Value is Nothing,1,Fields(Parameters!GROUP_3.Value).Value) 结果: IIF表达

我有一份SSRS报告,我正在对其进行动态分组。对通过报表参数提供的字段名进行常规分组不会出现任何问题

我遇到的问题是,如果参数为null,我希望避免分组

我尝试了本文建议使用的方法(在IIF语句中检查null),但它对我不起作用:

不工作:

将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)
我有什么地方做错了吗?有什么建议吗?

调用
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)

如果不明显,您需要用数据集中的列名替换“有效列名”。不管它是哪一列,只要它始终在数据集中。这意味着如果GROUP_3为空,则在参数3中使用有效的列名引用只是为了避开错误。
IIF()
调用仍会将其默认值设置为“1”,代码的行为应符合您的要求。

我已经尝试过这个方法,但它无法按我所希望的方式工作。在sp中添加空白列不是一种选择,因为我正在处理现有的存储过程。我尝试向数据集中添加一个空白字段,但收到了相同的错误消息。(表达式引用字段“”,该字段在“字段”集合中不存在)是。我只是在看类似的东西。这是我试图避免的坏东西。但这是目前的解决方案。