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

问题描述

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

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

例如,用户可以输入最小值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,"Transparent"))

解决方法

由于您的逻辑实质上返回相同的条件到let x: ListTerminatedWith<int,string> = [ 1;2;3;"6"] max之下(如果可用),因此您可以在此处使用min表达式简化条件逻辑,该表达式只需检查无论哪种情况。无需检查switch语句中的所有各种组合。

简单地说,如果“有一个最小值并且我们在其下”或“有一个最大值并且我们在其下”是正确的,则背景为iif,否则保持透明,因此:

Red
,

我将其重构为使用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,True,Nothing
)