DateTime как пустая строка или ноль? Как проверить? - PullRequest
3 голосов
/ 24 января 2012

Q:

Я хочу проверить DateTime против null value, чтобы очистить ячейку в моем отчете, если datetime равно null. Но я не знаю, как это сделать: это выглядит так 1/1/0001 если это было null.и я хочу, чтобы это была пустая ячейка.

Это тип данных в моем наборе данных:

enter image description here

и это выражениезначение моего столбца:

=FormatDateTime(Fields!D_DateTime.Value,2)

Ответы [ 5 ]

9 голосов
/ 24 января 2012

Как я уже говорил в своем комментарии, вы должны проверить, является ли ваша дата DateTime.MinValue (минимальное значение, которое может принять дата, а именно 01.010001).

if (your_date_property == DateTime.MinValue)
{
    // Do what you need
}
4 голосов
/ 24 января 2012
=IIf(FormatDateTime(Fields!D_DateTime.Value,2)=CDate("1/1/0001"),"",FormatDateTime(Fields!D_DateTime.Value,2))

Большое спасибо, я думаю, что это решает мою проблему.

1 голос
/ 15 мая 2015

Как @Marco предложил вам проверить на MinValue. И если вы хотите передать NULL параметру nullable, вы можете использовать следующий код для параметра reportviewer.

Vb.Net

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

C #

ReportParameter rpFrom = new ReportParameter("FromDate", new string[] { null }, false);
1 голос
/ 17 ноября 2014

Измените тип поля в наборе данных (rd:TypeName) на System.Nullable (Of System.DateTime). Тогда вы можете просто проверить =Fields!D_DateTime.Value Is Nothing.

1 голос
/ 24 января 2012

Поскольку datetime - это структура, а не класс, т. Е. Тип значения, а не ссылочный тип; он должен быть инициализирован с некоторым значением. Он не может иметь нулевые значения.

Следовательно, чтобы проверить значение по умолчанию, вы должны проверить равенство с DateTime.MinValue

т.е.

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