【发布时间】:2016-02-23 01:15:32
【问题描述】:
我有一个 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"))
当我运行报告时,背景颜色表达式只会返回黄色。作为测试,我将背景颜色表达式粘贴为单元格值并再次运行它。结果如下图
我没有收到构建或运行时错误,所以我不确定为什么这不起作用。
【问题讨论】:
-
您是否尝试过使用内置的 Previous 功能?此外,您最好在表达式中引用数据集字段而不是单个文本框。
-
Re: 尝试内置的 Previous 函数:这可能是 Internet 搜索返回陈旧信息的情况。但是在寻找解决方案时,我一直遇到“不支持 Previous 函数”的语句当你有行和列分组时”See Social.msdn Link here.
-
@StevenWhite Re 使用文本框引用与数据集字段.. 你当然是对的,但我通过文本框值 ref 获得的值本身就是“IIF(Sum(),0)”。 . 类型表达式,整个事情变得难以阅读/理解
标签: ssrs-2008