在RDLC报告中总结时间

时间:2015-01-06 11:17:34

标签: c# visual-studio-2013 rdlc timespan

在我的RDLC报告中,我显示了员工的工作时间。

我想总算一下每个员工的时间。我使用可空的timeSpan类型返回记录集中的工作时间,并在报告中将它们格式化为hh:mm,如下所示:

7:30   
4:45  
5:30  
7:30  
7:30

围绕同一问题such as this and this提出了许多其他问题,但似乎没有一个问题可以接受。

question几乎就是我想要的。除了它显示日,小时,分钟,秒 但是我的用户只想要总小时和分钟,没有天,即在这种情况下我希望看到32小时45分钟。

7:30   
4:45  
5:30  
7:30  
7:30

---------
Total:    32:45

我尝试过以下公式,但我得到了#error:

=TimeSpan.FromMinutes(Sum(Fields!Hours.Value))

并且:

=Sum(Fields!Hours.Value)

这个给了我几天,几小时,一分钟......所以很接近,但我只需要总数......:mm:

=TimeSpan.FromTicks(Sum(Fields!Hours.Value))

这可能吗?

2 个答案:

答案 0 :(得分:8)

我会试试这些部分,因为你可以得到它们。

=(TimeSpan.FromTicks(Sum(Fields!Hours.Value))。Days * 24 + TimeSpan.FromTicks(Sum(Fields!Hours.Value))。Hours).ToString +“:”+ TimeSpan.FromTicks(萨姆(字段!Hours.Value))。Minutes.ToString( “D2”)

在这种情况下,分钟数将为:45,但字符串格式化必须允许以小时为单位显示2位数的单位数,因此如果小于10分钟,则可能是前导零。

答案 1 :(得分:0)

试试这个.. 对我有用。

=IIf((SUM(Cint(Split(Fields!Call_Duration.value,":").GetValue(0))) + (SUM(Cint(Split(Fields!Call_Duration.Value,":").GetValue(1)))+ Sum(Cint(split(Fields!Call_Duration.Value,":").GetValue(2)))\60)\60 ) < 10,"0","" ) +(SUM(Cint(Split(Fields!Call_Duration.value,":").GetValue(0))) + (SUM(Cint(Split(Fields!Call_Duration.Value,":").GetValue(1)))+ Sum(Cint(split(Fields!Call_Duration.Value,":").GetValue(2)))\60)\60 ).ToString +IIf(((SUM(Cint(Split(Fields!Call_Duration.Value,":").GetValue(1))) + Sum(Cint(split(Fields!Call_Duration.Value,":").GetValue(2)))\60) Mod 60) < 10,":0",":" ) + ((SUM(Cint(Split(Fields!Call_Duration.Value,":").GetValue(1))) + Sum(Cint(split(Fields!Call_Duration.Value,":").GetValue(2)))\60) Mod 60).ToString +IIf((Sum(Cint(split(Fields!Call_Duration.Value,":").GetValue(2))) Mod 60) < 10,":0",":" ) + (Sum(Cint(split(Fields!Call_Duration.Value,":").GetValue(2))) Mod 60).ToString