在唯一的行组中,我尝试使用以下表达式获取备用行颜色:
背景颜色的表达式:=IIf( RunningValue (Fields!SP.Value, CountDistinct, Nothing) MOD 2, "White", "blue")
SQL code:
select
ROW_NUMBER() OVER (ORDER BY DataDate) AS SSRSRowNumber
,datepart(dw,datadate) SSRSDateFilter
,DataDate
,SP
,sum(TMI) as TotalCI
from table
where DataDate>GETDATE()-20
group by DataDate,SP
order by 1, 2
结果如下图所示,上面列出的表达式有什么问题?
修改 - :Solution
答案 0 :(得分:4)
数据中缺少的日期导致背景行颜色无法正常工作的问题。
您可以浪费大量时间尝试使查询正常工作。
或者你可以使用Alternating Row Color功能。
Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
ByVal EvenColor As String, ByVal Toggle As Boolean) As String
If Toggle Then bOddRow = Not bOddRow
If bOddRow Then
Return OddColor
Else
Return EvenColor
End If
End Function
对于控制颜色的第一列:
=Code.AlternateColor("AliceBlue", "White", True)
对于其余列,请勿使用第三个参数切换:
=Code.AlternateColor("AliceBlue", "White", False)
您可能需要在矩阵中切换第一列中的颜色。
SSRS Alternating row color issues when some rows are not visible
答案 1 :(得分:1)
对于我来说,我的行组和列组之间没有交叉点。
实施例: - 我有存储过程1和2
在1/1上,1和2都跑了,所以我记录了它们
在1/2上,只需要1运行,所以我只记录1
1/3,他们都跑了,所以我记录了
我会在1/2的sp 2上看到乱糟糟的单元格(颜色不会发生变化),因为SSRS无法计算运行总计的新值(它&& #39; s仍然是1)。 3,它识别一个值并得到运行值现在为3,因此着色按预期恢复。
要解决此问题,您可以执行<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
以获取所有日期和SP的笛卡尔积,以便每个不同的日期对于每个不同的日期都有一行,并将其存储在临时表中。将当前查询存储在临时表或CSV中,然后加入基于cross apply
的查询。这将确保没有错过的细胞。请注意,这将产生性能影响,因此进行相应的测试(很可能是微不足道的。)
如果您需要帮助撰写查询,请告诉我。