【发布时间】:2015-03-18 15:29:03
【问题描述】:
SSRS 2008r2
我正在尝试对包含表达式的 GROUPing 中的字段执行聚合(求和)。
我希望 SUM 出现的字段在不同的 GROUPing 中。
我在报表属性中创建了以下函数
Dim public tot_OT_Hrs As Decimal
Public Function Add_OT_Hrs(ByVal OT_Hrs As Decimal) AS Decimal
tot_OT_Hrs = tot_OT_Hrs + OT_Hrs
return OT_Hrs
End Function
Public Function GetTotal()
return tot_OT_Hrs
End Function
我在表达式所在的字段中添加了对“Add_OT_Hrs”函数的调用,这工作正常。
=Code.Add_OT_Hrs(
IIF(Sum(Fields!HrsWorked.Value) > Parameters!StdWorkingHrs.Value,
Sum(Fields!HrsWorked.Value) - Parameters!StdWorkingHrs.Value + Sum(Fields!Rate1Hrs.Value)
, Sum(Fields!Rate1Hrs.Value )
)
)
Fields!Rate1Hrs.Value 是表达式所在的字段,Fields!HrsWorked.Value 是相邻字段
但是,我想总计出现的字段我添加了以下内容
=Code.GetTotal()
在 GROUPing 的每一行中返回的都是 0(零)。如果我将 Dim public tot_OT_Hrs As Decimal 变量初始化为 1.2,那么 GROUPing 中的每一行都会返回 1.2。 Add_OT_Hrs 函数未按预期工作。
我哪里错了?
提前致谢。
【问题讨论】:
-
您能否发布您用于 Add_OT_Hrs 字段的表达式
-
我已经用表达式@SFrejofsky 更新了这个问题。 Fields!Rate1Hrs.Value 是表达式所在的字段,Fields!HrsWorked.Value 是相邻字段
-
尝试将总和和值隐式转换为十进制。那里可能会出现错误,因为 SSRS 并不总是正确处理转换,尤其是当您的文本框设置为通用而不是特定数据类型时。您还可以删除 iif 语句并仅使用 sum 并查看返回的值是什么。
-
我已将文本框属性更改为数字,它已设置为常规。我已经删除了 IIF 语句并将总和留在原处
=Code.Add_OT_Hrs(Format(CDbl(Sum(Fields!Rate1Hrs.Value)),"00.00"))并且我仍然得到零。 -
如果我像
public tot_OT_Hrs As Decimal = 1.2那样初始化tot_OT_Hrs 变量,那么GetTotal()函数的返回值为1.2。看来Add_OT_Hrs函数工作正常。有什么想法吗?
标签: reporting-services sql-server-2008-r2 ssrs-2008-r2