【问题标题】:Nested SWITCH statements for coloring table rows depends on field value用于着色表行的嵌套 SWITCH 语句取决于字段值
【发布时间】: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


    【解决方案1】:

    这样它应该可以工作:

    =Switch(Fields!Category.Value = "A - categoryA", "Red",
            Fields!Category.Value = "A - categoryA.A01 - subcat A01", "Blue",
            Fields!Category.Value = "A - categoryA.A01 - subcat A01.A01A - subcat A01A", "Green",
            Fields!Category.Value = "A - categoryA.A02 - subcat A02", "Yellow",
            Fields!Category.Value = "B - categoryB", "Grey",
            Fields!Category.Value = "C - categoryC", "Black",
            Fields!Category.Value = "D - categoryD", "Orange")
    

    如果你想使用Split(),这是你正确使用的方式:

    =Split("Test.Again", ".")(0)   ' Result: Test
    =Split("Test.Again", ".")(1)   ' Result: Again
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2012-01-03
      • 2011-10-03
      • 1970-01-01
      相关资源
      最近更新 更多