基于列值的渐变填充
Gradient fill based on column value
我想根据另一个字段的值从最大值到最小值设置列的背景颜色(渐变)。
参考以下内容table:
如上所示table,SysName列(而不是Hours列)的背景颜色应根据Hours列的值从深绿色开始设置为浅绿色。
如何在 SSRS 中实现这一点?
有一种非常简单的设置方法,特别是当您的值字段来自详细信息行时。
这是一个例子:
填充颜色属性可以采用#AABBCC
格式的十六进制颜色字符串,其中有两个数字对应于每种颜色各自的RGB值。可以设置一个表达式来生成该字符串。请注意,填充表达式按名称引用字段,因此它可用于适当范围内的任何文本框。
包括一个简单版本的表达式,因为它最容易理解正在发生的事情。第二个表达式从最小值而不是 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 不允许您使用具有嵌套聚合的数据集范围。因此,您可以添加一个按常量值分组的父组,然后将其替换为数据集引用。
我想根据另一个字段的值从最大值到最小值设置列的背景颜色(渐变)。
参考以下内容table:
如上所示table,SysName列(而不是Hours列)的背景颜色应根据Hours列的值从深绿色开始设置为浅绿色。
如何在 SSRS 中实现这一点?
有一种非常简单的设置方法,特别是当您的值字段来自详细信息行时。
这是一个例子:
填充颜色属性可以采用#AABBCC
格式的十六进制颜色字符串,其中有两个数字对应于每种颜色各自的RGB值。可以设置一个表达式来生成该字符串。请注意,填充表达式按名称引用字段,因此它可用于适当范围内的任何文本框。
包括一个简单版本的表达式,因为它最容易理解正在发生的事情。第二个表达式从最小值而不是 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 不允许您使用具有嵌套聚合的数据集范围。因此,您可以添加一个按常量值分组的父组,然后将其替换为数据集引用。