【问题标题】:DateTime as empty String or null ?How to check?DateTime 为空字符串或空?如何检查?
【发布时间】:2012-01-24 11:15:24
【问题描述】:

问:

如果日期时间为空,我想对照null value 检查日期时间以清空我的报告中的单元格。但我不知道该怎么做:它看起来像这样1/1/0001 如果它是空的。并且我希望它是空单元格。

这是我数据集中的数据类型:

这是我的专栏的表达式值:

=FormatDateTime(Fields!D_DateTime.Value,2)

【问题讨论】:

  • 您可以通过DateTime.MinValue查看
  • 日期时间不能为空。也许您想对照 DateTime.MinValue 检查它?
  • = IIf(FormatDateTime(Fields!D_DateTime.Value,2)= DateTime. 没有MinValue
  • 那么如何检查我的报告中的最小值?
  • 是否将空值作为 DateTime MinValue 插入到您的数据库中?我认为这些值应该作为空值输入,这最终会帮助你解决这个问题

标签: c# asp.net datetime reporting-services ssrs-2008


【解决方案1】:

正如我在评论中告诉你的,你应该检查你的日期是否是DateTime.MinValue(日期可以假设的最小值,正好是 01/01/0001)。

if (your_date_property == DateTime.MinValue)
{
    // Do what you need
}

【讨论】:

  • 你能写出表达式吗?
  • hmmm ,这是一份报告,所以表达式将是这样的:= IIf(FormatDateTime(Fields!D_DateTime.Value,2),....
  • default(DateTime) 相比,对日期时间初始化的了解较少,适用于所有结构(和类)类型。
【解决方案2】:
=IIf(FormatDateTime(Fields!D_DateTime.Value,2)=CDate("1/1/0001"),"",FormatDateTime(Fields!D_DateTime.Value,2))

非常感谢,我认为这解决了我的问题。

【讨论】:

    【解决方案3】:

    因为 datetime 是一个结构而不是类,即一个值类型而不是一个引用类型;它必须用一些值初始化。它不能有空值。

    因此要检查默认值,您应该检查与 DateTime.MinValue 的相等性

    if(D_DateTime.Value == DateTime.MinValue)
    {
       //write code here for default value handling
    }
    

    【讨论】:

    • 与 default(DateTime) 相比,对日期时间初始化的了解较少,适用于所有结构(和类)类型。
    【解决方案4】:

    将数据集中字段的类型 (rd:TypeName) 更改为 System.Nullable (Of System.DateTime)。然后你可以简单地测试=Fields!D_DateTime.Value Is Nothing

    【讨论】:

      【解决方案5】:

      就像@Marco 建议的那样,您可以检查MinValue。而如果你想将NULL传递给可以为空的参数,你可以使用reportviewer参数的如下代码。

      Vb.Net

      Dim rpFrom As New ReportParameter("FromDate", New String() {Nothing}, False)
      

      C#

      ReportParameter rpFrom = new ReportParameter("FromDate", new string[] { null }, false);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-05
        • 2017-08-19
        • 1970-01-01
        • 2023-03-30
        • 2012-11-24
        • 2018-11-28
        • 2010-09-24
        • 2011-07-26
        相关资源
        最近更新 更多