我在SQL Server Reporting Services中有一个矩阵,通常是做它需要做的事情。但是,我正在尝试格式化整行的背景颜色,具体取决于按列分组的值。我的问题是任何没有值的单元格都没有获得背景颜色。所以,我原来的数据是:
这将在我的矩阵中显示为:
在每一行上,我然后放置一个背景格式:
=IIf(Fields!Highlight.Value="1", "Yellow", "White")
不幸的是,最终的结果是:
我假设我可以在Mark
记录集中返回另一行Y
条件和NULL
或空字符串以及Highlight
值为1,但这需要一些努力。有没有办法按整个行的突出显示值进行分组?
您可能需要更复杂的表达式来获得所需内容。我建议使用与之前单元格值的比较来尝试获取正确的颜色。
=IIf(Fields!Highlight.Value="1"
OR (Previous(Fields!Highlight.Value)="1" AND IsNothing(Fields!Highlight.Value)), "Yellow", "White")
这可能也可能不起作用 - 我不确定您的数据是如何转动的,但我们的想法是检查前一个单元格的高亮值,但前提是当前单元格没有高亮值。如果X
列中的值为空,则可能会出现问题,但在这种情况下,您可以尝试根据用户添加类似的比较。
...AND Previous(Fields!User.Value) = Fields!User.Value
无论如何,你明白了,我相信你可以根据自己的需要进行调整。
我最后只是在我的Row Group中添加一个名为Row_Highlight的变量,并将其设置为Fields!Highlight.Value。如果Highlight值在用户内变化,我可以将它设置为MAX(Fields!Highlight.Value)。然后我的格式表达式变为IIf(变量!Row_Highlight.Value =“1”,“黄色”,“白色”)。
我假设你的Highlight
列对于每个User
值具有相同的值具有相同的值(即Mark
总是具有Highlight
的1
值)或者如果任何行具有Highlight
值1
,则User
应该始终是突出显示。
如果是这种情况之一,您应该能够将行突出显示表达式更改为=IIf(max(Fields!Highlight.Value, "YourRowGroupName") = 1, "Yellow", "White")
以使整个分组行受到影响。