我想根据另一个字段的值从最大值到最小值设置列的背景颜色(渐变)。
请参阅下表:
如上表所示,SysName列的背景颜色(而不是Hours列)应设置为从深绿色到浅绿色,具体取决于“小时”列的值。
如何在SSRS中实现这一目标?
答案 0 :(得分:3)
有一种非常简单的方法可以设置它,特别是如果您的值字段来自详细行 这是一个例子:
“填充颜色”属性可以采用格式#AABBCC
的十六进制颜色字符串,其具有与颜色的各个RGB值对应的两个数字。可以设置表达式来生成该字符串。请注意,fill表达式按名称引用字段,因此它可以用于适当范围内的任何TextBox。
包含一个表达式的简单版本,因为它最容易理解,以了解正在发生的事情。第二个表达式从最小值而不是0开始缩放,并使用示例中的特定颜色。
简单版本:
="#" + Format(255 - CInt(200 * Fields!Target.Value / Max(Fields!Target.Value, "DataSet1")), "X2") + "FF" + Format(255 - CInt(200 * Fields!Target.Value / Max(Fields!Target.Value, "DataSet1")), "X2")
提供从0到最大值的线性颜色梯度。最大值将导致55红色,255绿色和55蓝色,而0值将为白色(255/255/255)。请注意,静态FF
是255绿色。
最低价格版本:
为了使用一个使用最小值的渐变而不是表达式有点混乱,但仍然很容易设置。
="#" + Format(255 - CInt(155 * (Fields!Target.Value - Min(Fields!Target.Value, "DataSet1")) / (Max(Fields!Target.Value, "DataSet1") - Min(Fields!Target.Value, "DataSet1"))), "X2") + Format(255 - CInt(55 * (Fields!Target.Value - Min(Fields!Target.Value, "DataSet1")) / (Max(Fields!Target.Value, "DataSet1") - Min(Fields!Target.Value, "DataSet1"))), "X2") + Format(255 - CInt(135 * (Fields!Target.Value - Min(Fields!Target.Value, "DataSet1")) / (Max(Fields!Target.Value, "DataSet1") - Min(Fields!Target.Value, "DataSet1"))), "X2")
变量版:
如果希望颜色值更容易更改,可以设置报告变量,指定RGB值以及应为最大值调整的值。在这种情况下,表达式将是:
="#" + Format(CInt(Variables!MaxR.Value - Variables!AdjR.Value * (Fields!Target.Value - Min(Fields!Target.Value, "DataSet1")) / (Max(Fields!Target.Value, "DataSet1") - Min(Fields!Target.Value, "DataSet1"))), "X2") + Format(CInt(Variables!MaxG.Value - Variables!AdjG.Value * (Fields!Target.Value - Min(Fields!Target.Value, "DataSet1")) / (Max(Fields!Target.Value, "DataSet1") - Min(Fields!Target.Value, "DataSet1"))), "X2") + Format(CInt(Variables!MaxB.Value - Variables!AdjB.Value * (Fields!Target.Value - Min(Fields!Target.Value, "DataSet1")) / (Max(Fields!Target.Value, "DataSet1") - Min(Fields!Target.Value, "DataSet1"))), "X2")
这些是用于从第二个表达式生成渐变的报告变量:
注意:如果您的值字段本身是一个聚合,则需要进行另一次轻微调整。您需要对值使用嵌套聚合,但SSRS不允许您将数据集范围与嵌套聚合一起使用。因此,您可以添加一个对常量值进行分组的父组,然后将其替换为数据集引用。