VS2010报表设计器:在int中将int格式化为(x)d,(y)h,(z)m

时间:2012-02-08 14:45:36

标签: rdlc

我从我的数据库返回一个int,表示以分钟为单位的时间。

即。如果列的值为10,则表示10分钟。 如果它是199,则意味着它的3小时19分钟。

然后我将结果分组,并计算SUM(Fields!TotalTime.Value)。

如何按以下格式格式化此int:(x)d,(y)h,(z)m,其中

d = days
h = hours
m = minutes

使用内置功能?或者,我可以以某种方式编写自己的函数,如WPF转换器?因为我在报告中进行分组,所以我无法从数据库中返回已经格式化的值。

1 个答案:

答案 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))