如何在rdlc报告中追加th,st,nd和rd当天的日期?

时间:2015-11-11 05:56:45

标签: sql vb.net sql-server-2008 rdlc date-format

我正在使用认证,我需要附加日期后缀的日期。我尝试在TextBox的expression属性中使用=Day(Fields!Date.value),但输出只是当天的数字/日期,但没有后缀。我在月份和年份中没有问题只有当天日期的后缀。感谢

2 个答案:

答案 0 :(得分:1)

使用Is there an easy way to create ordinals in C#?中的建议,您可以为您的rdlc报告创建Custom Code,并将其与表达式一起使用。

  1. 在rdlc属性中,在代码标签中添加以下功能

    Public Shared Function AddOrdinal(num As Integer) As String
        If num <= 0 Then
            Return num.ToString()
        End If
        Select Case num Mod 100
            Case 11, 12, 13
                Return num & "th"
        End Select
        Select Case num Mod 10
            Case 1
                Return num & "st"
            Case 2
                Return num & "nd"
            Case 3
                Return num & "rd"
            Case Else
                Return num & "th"
        End Select
    End Function
    
  2. 然后按如下所示修改 Expression

    =Code.AddOrdinal(Day(Fields!Date.value))
    

答案 1 :(得分:0)

如果您可以修改数据集,可以添加以下字段,将日期分为日,后缀和月/年:

select Cast(DAY(Date) as Varchar(2)) as MthDay, DATENAME(month, Date) + ' ' + convert(varchar(4),year(Date)) as MthYr,
CASE WHEN DAY(Date) in (1,21,31) THEN 'st' WHEN DAY(Date) IN (2,22) then 'nd' WHEN DAY(Date) IN (3,23) then 'rd' ELSE 'th ' end as Suffix
From MyData

然后,您可以在报告中使用三个文本字段来显示日期,后缀文本设置为6pt,并设置为显示在字段顶部。

或者,您可以使用一个文本字段集来允许HTML标记,并使用sup标记将这三个部分连接在一起以适当地显示后缀。