我从我的数据库返回一个int,表示以分钟为单位的时间。
即。如果列的值为10,则表示10分钟。 如果它是199,则意味着它的3小时19分钟。
然后我将结果分组,并计算SUM(Fields!TotalTime.Value)。
如何按以下格式格式化此int:(x)d,(y)h,(z)m,其中
d = days
h = hours
m = minutes
使用内置功能?或者,我可以以某种方式编写自己的函数,如WPF转换器?因为我在报告中进行分组,所以我无法从数据库中返回已经格式化的值。
答案 0 :(得分:0)
实际上可以做一个自定义转换器。
在报表设计器中,右键单击报表,然后单击“报表属性”。在“代码”选项卡下,您可以指定报表中专门使用的代码。在那里创建转换器功能。就我而言:
Public Function GenerateTimeString(ByVal minutes As Integer) As String
Dim returnString As String = ""
If minutes = 0 Then
returnString = "0m"
Else
Dim ts As TimeSpan = TimeSpan.FromMinutes(minutes)
If ts.Days <> 0 Then
returnString = returnString & ts.Days & "d,"
End If
returnString = returnString & ts.Hours & "d," & ts.Minutes & "m"
End If
Return returnString
End Function
然后,使用以下命令在列中调用它:
=Code.GenerateTimeString(Sum(Fields!TotalTime.Value))