【发布时间】:2019-08-16 16:44:19
【问题描述】:
我是 SSRS 报告的新手,我有一个问题让我发疯了好几天。
我创建了一个报告,其中每一行代表类别或子类别。我需要为每一行设置唯一的背景颜色。我已经尝试了很多 SWITCH 和 IIF 语句的组合,但没有一个能像我需要的那样工作。
有一组类别和子类别,如下所示:
A - 类别A
A - categoryA.A01 - subcat A01
A - categoryA.A01 - subcat A01.A01A - subcat A01A
A - categoryA.A02 - subcat A02
B - 类别B
C - 类别C
D - 类别D
...
考虑到类别名称可以更改,并且其名称中的每个子类别都包含以点分隔的所有父类别的名称,因此我使用Split()和Left()函数来获取类别或子类别开头的代码名称,只有这个代码不会改变。
这个表达式比其他表达式效果更好,但并不完全如其应有的那样。它为同一级别的子类别设置相同的颜色。
=Switch(Left(Fields!Category.Value,1) = "A",
IIF(Split(Fields!Category.Value, ".").length = 1,
"#e4daf3",
IIF(Split(Fields!Category.Value, ".").length = 2,
"#8db4e2",
IIF(Split(Fields!Category.Value, ".").length = 3,
"#ebf1de","#00ff00"))),
Left(Fields!Category.Value,1) = "B", "#fdd9d9",
Left(Fields!Category.Value,1) = "C", "#fcffd4",
Left(Fields!Category.Value,1) = "D", "#8de2de",
Left(Fields!Category.Value,1) = "E", "#c6e6fd"
)
我尝试在很多方面使这个表达更好,比如:
IIF(Split(Fields!Category.Value, ".").length = 1,
"#e4daf3",
IIF(Split(Fields!Category.Value, ".").length = 2 AND Left(Split(Fields!Category.Value, ".")(1),3) = "A01",
"#8db4e2",
IIF(Split(Fields!Category.Value, ".").length = 2 AND Left(Split(Fields!Category.Value, ".")(1),3) = "A02",
"#ff0000",
IIF(Split(Fields!Category.Value, ".").length = 3 AND Left(Split(Fields!Category.Value, ".")(2),4) = "A01A",
"#0000ff","#00ff00")))),
Left(Fields!Category.Value,1) = "B", "#fdd9d9",
Left(Fields!Category.Value,1) = "C", "#fcffd4",
Left(Fields!Category.Value,1) = "D", "#8de2de",
Left(Fields!Category.Value,1) = "E", "#c6e6fd"
)
但是这个表达式不知何故只为子类别设置了背景颜色,根类别清晰,根本没有背景。
也许我什么都没看到,或者可能有一些规则禁止使用嵌套的 SWITCHes 和 IIF。请帮帮我。
【问题讨论】:
标签: reporting-services reportbuilder ssrs-2016