SQL 报表生成器 Table 动态颜色

SQL Report Builder Table Dynamic Color

这可能超出了报表生成器的限制。

我有一份 SQL 报告生成 table。 table 是具有动态行数的固定列数。 table 的要点是显示系统的食谱信息,我想在更改食谱信息时让用户更清楚。

示例

+-----------+-------+-----+
| row names | Col A | Col |
+-----------+-------+-----+
| row1      |    10 |  20 |
| row2      |    14 |  20 |
+-----------+-------+-----+

colA 的值已更改,因此我想更改 row2,colA 的单元格颜色或更改字体。使用户清楚发生了什么变化。

我希望永远动态地执行此操作。基本上与之前的行进行比较,并确定我是否需要更改任何单元格的颜色。

假设您只是想比较报告中显示的前一行,那么这很容易。

为了重新创建示例,我在名为 DataSet1 的数据集中使用了以下查询。

DECLARE @t TABLE(RowID int, ColA int, ColB int)

INSERT INTO @t VALUES
(1,10,20),
(2,14,20),
(3,14,20),
(4,15,21),
(5,15,22)

SELECT * FROM @t

然后我创建了一个简单的 table 结果按 RowID 排序。

然后我将包含 [ColA] 的单元格的 BackgroundColor 属性 更改为以下表达式。

=IIF(
    Fields!ColA.Value = Previous(Fields!ColA.Value) 
        OR Fields!RowID.Value = MIN(Fields!RowID.Value, "DataSet1")
    , Nothing
    , "Khaki"
    )

我为 Col B 重复了此操作,并根据需要更改了字段名称。 该表达式只是检查值是否与上一行相同。对于第一行,with 永远是错误的,所以我检查一下我们是否正在格式化第一行。因此,如果 (a) 我们在第一行或 (b) 数字与此列中的前一个数字相同,则背景设置为 Nothing(默认值),如果两个条件都不是满足我们设置背景为'Khaki'.

最终结果是这样的...

另一种方法是修改 .RDL file.The RDL 文件基本上包含 XML 标签,因此如果您在记事本中打开它们或使用查看代码 Visual Studio 打开它们。您会发现为每一列调用名为 BackgroundColor 的标签。通过在现有颜色代码的位置给出颜色代码,您将获得所需的 color.you 可以设计自定义颜色并将其用于您的报告。