reporting-services - 基于列值的渐变填充

标签 reporting-services ssrs-2012 ssrs-2016

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

引用下表:

Gradient example

如上表所示,SysName 列(而不是 Hours 列)的背景颜色应根据 Hours 列的值从深绿色开始设置为浅绿色。

如何在 SSRS 中实现这一点?

最佳答案

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

Gradient Example

“填充颜色”属性可以采用 #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 绿色。

最低值(value)版本:

为了获得使用最小值的渐变,表达式变得有点困惑,但仍然很容易设置。

="#" + 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 不允许您将数据集范围与嵌套聚合一起使用。因此,您可以添加一个按常量值分组的父组,然后将其替换为数据集引用。

关于reporting-services - 基于列值的渐变填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39632435/

相关文章:

visual-studio-2010 - VS.NET 2010 中是否弃用了 SQL Reporting Services 报表参数?

ssrs-2008 - 在 SSRS 中,当我制作新报告时,为什么会收到错误 "item with same key has already been added"?

migration - 如何升级 SSRS 2005 报告项目以与现代 SSRS 版本一起使用?

reporting-services - 快速查询在 SSRS 2 中运行缓慢

ssrs-2012 - SSRS 工具提示未显示

sql-server - SSRS - 在条形图中仅显示前 N 个类别组,不包括重复组

c# - SSRS 2016 Report Viewer V13 工具栏图标不显示

mysql - SQL Server Reporting Services 未从 SQL 存储过程传递正确的参数

dataset - 如何确定哪个数据集用于特定变量?

reporting-services - 如何在ssrs中的每个页面中重复文本框