2012-02-08 33 views
0

我从我的数据库中返回一个int值,表示以分钟为单位的时间。VS2010报表设计器:在RDLC中格式化为(x)d,(y)h,(z)m

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

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

如何可以格式化这个INT以下列格式:使用内置函数(X)d,(Y)H,(Z)m,其中

d = days 
h = hours 
m = minutes 

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

回答

0

它实际上可以做一个自定义转换器。

在报表设计器中,右键单击报表,然后单击报表属性。在“代码”选项卡下,您可以指定特别在报告中使用的代码。在那里创建你的转换功能。在我的情况:

=Code.GenerateTimeString(Sum(Fields!TotalTime.Value)) 

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 

然后,把它在列

相关问题