基于列值的渐变填充

时间:2016-09-22 07:08:26

标签: reporting-services ssrs-2012 ssrs-2016

我想根据另一个字段的值从最大值到最小值设置列的背景颜色(渐变)。

请参阅下表:

Gradient example

如上表所示,SysName列的背景颜色(而不是Hours列)应设置为从深绿色到浅绿色,具体取决于“小时”列的值。

如何在SSRS中实现这一目标?

1 个答案:

答案 0 :(得分:3)

有一种非常简单的方法可以设置它,特别是如果您的值字段来自详细行 这是一个例子:

Gradient Example

“填充颜色”属性可以采用格式#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")

这些是用于从第二个表达式生成渐变的报告变量:

Color Variables

注意:如果您的值字段本身是一个聚合,则需要进行另一次轻微调整。您需要对值使用嵌套聚合,但SSRS不允许您将数据集范围与嵌套聚合一起使用。因此,您可以添加一个对常量值进行分组的父组,然后将其替换为数据集引用。