SSRS表达式用作单元格值表达式,但不用作背景颜色值表达式

时间:2016-02-19 21:43:02

标签: ssrs-2008

我有一个带有矩阵的SSRS报告,我需要在列组中显示与前一列值相比的增长百分比。我通过使用自定义代码来管理这个...

DIM PreviousColValue AS Decimal
Dim RowName AS String = ""

Public Function  GetPreviousColValue(byval Val as Decimal, byval rwName as string)  as Decimal

DIM Local_PreviousColValue AS Decimal

IF RowName <> rwName THEN
    RowName  = rwName 
    PreviousColValue  = val
    Local_PreviousColValue  = 0
ELSE
    Local_PreviousColValue =  (Val - PreviousColValue)/PreviousColValue
    PreviousColValue  = val
END IF

Return Local_PreviousColValue 
End Function

..然后使用它作为单元格中的值表达式..      =Round(Code.GetPreviousColValue(ReportItems!Textbox8.Value,Fields!BusinessUnit.Value)*100,0,system.MidpointRounding.AwayFromZero)

到目前为止,这产生了预期的价值。现在我需要在背景颜色表达式中使用此表达式来获得红色/黄色/绿色,但是在该容量中它会失败。

背景颜色表达式如下所示:=IIF(ROUND(Code.GetPreviousColValue(ReportItems!Textbox9.Value,Fields!Salesperson.Value)*100,0,System.MidpointRounding.AwayFromZero)<=-5,"Red" ,IIF(ROUND(Code.GetPreviousColValue(ReportItems!Textbox9.Value,Fields!Salesperson.Value)*100,0,System.MidpointRounding.AwayFromZero) >=5,"Green" ,"Yellow"))

当我运行报告时,背景颜色表达式只返回黄色。作为测试,我将背景颜色表达式粘贴为单元​​格值并再次运行。结果如下图enter image description here

我没有构建或运行时错误,所以我不确定为什么这不起作用。

1 个答案:

答案 0 :(得分:0)

经过一些搜索后,我发现了一个更好的自定义代码解决方案,而不是我用来获得列组中的增长百分比与之前的列值相比。除了更简单的阅读之外,这个版本还有一个额外的好处:你可以动态地隐藏列组第一个实例的增长百分比列(因为它总是为零或为null)并且仍然在第二个/第三个/中得到正确的值列组的第4个实例。

Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object
If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then
    Return Nothing
Else if PreviousValue = 0 OR CurrentValue = 0 Then
    Return Nothing
Else 
    Return (CurrentValue - PreviousValue) /  PreviousValue
End If
End Function

新函数就是这样调用的 =Code.GetDeltaPercentage(Previous(Sum(<expression or dataset field>),"Group ByColumn"), Sum(<expression or dataset field>))

Re:原始问题 - 为什么我的单元格值表达式在用作背景颜色表达式时不起作用 - 我轻松一点,只是引用了单元格值。

=IIF(ROUND(Me.Value*100,0,System.MidpointRounding.AwayFromZero)<=-5,"Red"
,IIF(ROUND(Me.Value*100,0,System.MidpointRounding.AwayFromZero) >=5,"Green"
,"Yellow"))
相关问题