我正在报表生成器3中进行一些背景颜色格式化,但我对此表达式有困难。报告运行是否太复杂,或者我错过了什么?
伪代码 - 如果标记为空(真),背景颜色为白色,否则如果课程代码为L1英语(数字),格式等级(开关1),则格式等级(开关2)。
=IIF(IsNothing(Fields!Marks.Value),
"White",
IIF(Fields!CourseCode.Value = '50089109',
SWITCH(
Fields!Marks.Value > 57, "YellowGreen",
Fields!Marks.Value >= 48 AND Fields!Marks.Value <= 57 , "Orange",
Fields!Marks.Value < 48, "Firebrick"
)
,
SWITCH(
Fields!Marks.Value > 61, "YellowGreen",
Fields!Marks.Value >= 52 AND Fields!Marks.Value <= 61 , "Orange",
Fields!Marks.Value < 52, "Firebrick"
)
)
)
这是我针对同一问题的另一种方法 - 首先评估课程代码是否为真,然后根据该方法应用格式:
=IIF(Fields!CourseCode.Value = '50089109',
IIF(IsNothing(Fields!Marks.Value), "White",
SWITCH(
Fields!Marks.Value > 57, "YellowGreen",
Fields!Marks.Value >= 48 AND Fields!Marks.Value <= 57 , "Orange",
Fields!Marks.Value < 48, "Firebrick"
)
),
IIF(IsNothing(Fields!Marks.Value), "White",
SWITCH(
Fields!Marks.Value > 61, "YellowGreen",
Fields!Marks.Value >= 52 AND Fields!Marks.Value <= 61 , "Orange",
Fields!Marks.Value < 52, "Firebrick"
)
)
)
答案 0 :(得分:1)
我的表达式确实看不出太多错误所以可能是某些值没有被捕获。出于测试目的,我将设置除白色之外的背景颜色,以便您可以查看是否满足第一个条件。您也可以稍微清理SWITCH语句。
因此,出于测试目的,我将使用以下表达式
测试版
=IIF(IsNothing(Fields!Marks.Value),
"LimeGreen",
IIF(Fields!CourseCode.Value = "50089109",
SWITCH(
Fields!Marks.Value > 57, "YellowGreen",
Fields!Marks.Value >= 48, "Orange",
Fields!Marks.Value < 48, "Firebrick",
True, "HotPink"
)
,
SWITCH(
Fields!Marks.Value > 61, "YellowGreen",
Fields!Marks.Value >= 52, "Orange",
Fields!Marks.Value < 52, "Firebrick",
True, "HotPink"
)
)
)
被IIF的True部分困住的任何东西都是LimeGreen,任何虚假部分,但与任何开关语句不匹配都是粉红色的。您还会注意到我已经删除了switch语句中的部分中间表达式。这些不是必需的,因为当满足第一个真实条件时,switch语句会停止。您会看到,在下面的“生产”版本中,我们可以删除更多。
我们还添加了最终切换表达式true
。当Switch停在第一个真实表达式时,我们新表达式中的true
就像一个else
修复任何问题后,生产版本将如下所示。
制作版
=IIF(IsNothing(Fields!Marks.Value),
Nothing,
IIF(Fields!CourseCode.Value = "50089109",
SWITCH(
Fields!Marks.Value > 57, "YellowGreen",
Fields!Marks.Value >= 48, "Orange",
True, "Firebrick"
)
,
SWITCH(
Fields!Marks.Value > 61, "YellowGreen",
Fields!Marks.Value >= 52, "Orange",
True, "Firebrick"
)
)
)