基于多个参数的 SSRS 填充颜色表达式

SSRS Fill Color Expression based on Multiple Parameters

我在 SSRS 报告中有一个 table,我试图根据单元格中包含的值是否在用户输入的几个参数范围内来设置其中一列的填充颜色。

报告允许用户输入最小值和最大值,但两者都不是必需的。

例如,用户可以输入没有最大值的最小值 5、没有最小值的最大值 5,或者最小值和最大值。

输入此信息后,如果返回值小于输入的最小值或大于输入的最大值,我需要将相应单元格的填充颜色设置为红色。

我当前使用的表达式在同时输入最小值和最大值时有效,但在仅输入最小值时无效。

这是我现在使用的表达方式。我觉得我正在让自己变得比需要的更难,但我不太确定还能做什么。任何帮助,将不胜感激。谢谢。

IIF(Parameters!YSMin.Value<>"" AND Parameters!YSMax.Value <>"", 
IIF(Fields!Yield_Strength.Value<Parameters!YSMin.Value OR Fields!Yield_Strength.Value>Parameters!YSMax.Value,"Red","Transparent"),
IIF(Parameters!YSMin.Value<>"" AND Parameters!YSMax.Value ="",
IIF(Fields!Yield_Strength.Value<Parameters!YSMin.Value,"Red","Transparent"),"Transparent"))

由于您的逻辑本质上 returns 与超过 max 或低于 min 的条件相同(如果可用),您可以在此处使用 [=13= 简化条件逻辑] 简单地检查这两种情况的表达式。无需像 iif 语句中那样检查所有各种组合。

简单地说,如果“有一个最小值,我们在它下面”或“有一个最大值,我们在它上面”为真,背景为 Red,否则保持透明,所以:

=switch(not isnothing(Parameters!YSMin.Value) and Fields!Yield_Strength.Value < Parameters!YSMin.Value, "Red"
       ,not isnothing(Parameters!YSMax.Value) and Fields!Yield_Strength.Value > Parameters!YSMax.Value, "Red"
       ,True,"Transparent"
       )

我已将其重构为使用 SWITCH,因为我发现它更易于理解。

试试这个(未测试)

=SWITCH(
    NOT(IsNothing(Parameters!YSMin.Value)) AND Fields!Yield_Strength.Value < Parameters!YSMin.Value, "Red",
    NOT(IsNothing(Parameters!YSMax.Value)) AND Fields!Yield_Strength.Value > Parameters!YSMax.Value, "Red",
    True, Nothing
)