突出显示交替颜色行 SSRS 2016
Highlight Alternating Color Rows SSRS 2016
我在下面有一个 table,其中包含带有名称和金额的交易数据。我创建了一个名为“Related”的标志列,它根据“ParentID”列是否匹配来识别交易是否相关。如果是这样,对于具有相同“ParentID”的任何其他相关交易,第一个将从 1 开始并从那里递增。
Name Amount ParentID Related
-------------------------------------------------------------------
Jake 200 800 NULL
John 500 500 1
John 600 500 1
Paul 800 100 2
Joe 1000 100 2
Tom 700 600 3
Tom 1500 600 3
Troy 1000 800 5
Nick 500 800 5
Phil 2000 900 NULL
我想做的是在 SSRS 中,使用交替颜色根据它们是否相关来突出显示这些匹配行。到目前为止,我已经尝试过这个表达式来突出显示:
=IIF(
Fields!Related.Value >= 1, "Yellow", "Transparent"
)
这会将相关行突出显示为黄色,如下所示,但如果在我上面的示例 table 中使用,它会使第 2 行到第 7 行看起来像是相关的,而实际上它们并不相关彼此。
所以我想要的结果是在两种颜色(例如黄色和绿松石色)之间交替,以便能够区分相关行,如下所示。因此,在如下所示的这种情况下,另一组相关交易序列中的下一个将是绿松石色:
这是否可以通过 SSRS 中的表达式实现,或者是否有更好的方法在 SSRS 行中指示相关的行?
您可以使用 SWITCH 函数计算相关行和return颜色:
=SWITCH(IsNothing(Fields!Related.Value), "White",
Fields!Related.Value MOD 2 = 0, "Ivory",
Fields!Related.Value MOD 2 = 1, "AliceBlue",
1 = 1, NOTHING)
MOD 函数将 return 相关数字除以 2 的余数,因此它将在黄色和蓝色之间交替。您还可以增加 MOD 数字以获得更多颜色结果行(即 Fields!Related.Value MOD 5 =
{0 - 4} ),但最终可能会得到太多颜色。
另请注意,虽然 Visual Studio 会在 GUI 中给出“透明”,但它不是一个有效值。该消息将显示在 ERROR 选项卡中,并导致颜色为 NOTHING。请改用 NOTHING 或 White。
比起亮黄色,我更喜欢更微妙的色调。
在 SSRS 中没有简单的方法可以做到这一点,但您可以使用一些 VB 来使其工作。
这会将 Related 值保存在 iRowValue 中。如果它是 NULL (0),那么它是 returns WHITE。否则,它会检查当前的 Related 值与之前的值。如果不匹配,颜色就会改变。
Private bOddRow As Boolean
Private iRowValue As INTEGER
Function AlternateColor2(ByVal OddColor As String, ByVal EvenColor As String, ByVal Toggle As INTEGER) As String
IF Toggle = 0 THEN
iRowValue = Toggle
Return "White"
GOTO END_FUNCTION
END IF
If Toggle <> iRowValue Then bOddRow = Not bOddRow
iRowValue = Toggle
If bOddRow Then
Return OddColor
Else
Return EvenColor
End If
END_FUNCTION:
End Function
它将在 BackgroundColor 表达式中使用
=CODE.AlternateColor2("AliceBlue", "Ivory", IIF(ISNOTHING(Fields!Related.Value), 0, Fields!Related.Value))
我在下面有一个 table,其中包含带有名称和金额的交易数据。我创建了一个名为“Related”的标志列,它根据“ParentID”列是否匹配来识别交易是否相关。如果是这样,对于具有相同“ParentID”的任何其他相关交易,第一个将从 1 开始并从那里递增。
Name Amount ParentID Related
-------------------------------------------------------------------
Jake 200 800 NULL
John 500 500 1
John 600 500 1
Paul 800 100 2
Joe 1000 100 2
Tom 700 600 3
Tom 1500 600 3
Troy 1000 800 5
Nick 500 800 5
Phil 2000 900 NULL
我想做的是在 SSRS 中,使用交替颜色根据它们是否相关来突出显示这些匹配行。到目前为止,我已经尝试过这个表达式来突出显示:
=IIF(
Fields!Related.Value >= 1, "Yellow", "Transparent"
)
这会将相关行突出显示为黄色,如下所示,但如果在我上面的示例 table 中使用,它会使第 2 行到第 7 行看起来像是相关的,而实际上它们并不相关彼此。
所以我想要的结果是在两种颜色(例如黄色和绿松石色)之间交替,以便能够区分相关行,如下所示。因此,在如下所示的这种情况下,另一组相关交易序列中的下一个将是绿松石色:
这是否可以通过 SSRS 中的表达式实现,或者是否有更好的方法在 SSRS 行中指示相关的行?
您可以使用 SWITCH 函数计算相关行和return颜色:
=SWITCH(IsNothing(Fields!Related.Value), "White",
Fields!Related.Value MOD 2 = 0, "Ivory",
Fields!Related.Value MOD 2 = 1, "AliceBlue",
1 = 1, NOTHING)
MOD 函数将 return 相关数字除以 2 的余数,因此它将在黄色和蓝色之间交替。您还可以增加 MOD 数字以获得更多颜色结果行(即 Fields!Related.Value MOD 5 =
{0 - 4} ),但最终可能会得到太多颜色。
另请注意,虽然 Visual Studio 会在 GUI 中给出“透明”,但它不是一个有效值。该消息将显示在 ERROR 选项卡中,并导致颜色为 NOTHING。请改用 NOTHING 或 White。
比起亮黄色,我更喜欢更微妙的色调。
在 SSRS 中没有简单的方法可以做到这一点,但您可以使用一些 VB 来使其工作。
这会将 Related 值保存在 iRowValue 中。如果它是 NULL (0),那么它是 returns WHITE。否则,它会检查当前的 Related 值与之前的值。如果不匹配,颜色就会改变。
Private bOddRow As Boolean
Private iRowValue As INTEGER
Function AlternateColor2(ByVal OddColor As String, ByVal EvenColor As String, ByVal Toggle As INTEGER) As String
IF Toggle = 0 THEN
iRowValue = Toggle
Return "White"
GOTO END_FUNCTION
END IF
If Toggle <> iRowValue Then bOddRow = Not bOddRow
iRowValue = Toggle
If bOddRow Then
Return OddColor
Else
Return EvenColor
End If
END_FUNCTION:
End Function
它将在 BackgroundColor 表达式中使用
=CODE.AlternateColor2("AliceBlue", "Ivory", IIF(ISNOTHING(Fields!Related.Value), 0, Fields!Related.Value))