【问题标题】:How to append th, st, nd and rd for dates of the day in rdlc report?如何在 rdlc 报告中为当天的日期附加 th、st、nd 和 rd?
【发布时间】:2015-11-11 05:56:44
【问题描述】:

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

【问题讨论】:

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


    【解决方案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. 然后修改你的表达式如下

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

    【讨论】:

    • 谢谢!你救了我的命!天哪,你太棒了!
    【解决方案2】:

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

    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 标记将三个部分连接在一起以适当地显示后缀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      相关资源
      最近更新 更多