Преобразование строк в DateTime в выражении IIF

Я использую SSRS 2008R2 для создания отчетов. Источником данных является ответ xml от веб-сервиса. Я хочу вернуть пустую строку, если данных нет, но если есть строка с данными, я хочу преобразовать ее в другой формат даты и времени.

Я использую конструкцию IIF следующим образом:

=IIF
(
    LEN(Fields!DateOfReg.Value) <= 0,
    "",
    FORMAT(CDATE(DateTime.ParseExact(Fields!DateOfReg.Value,"M/d/yyyy hh:mm:ss tt",
    System.Globalization.CultureInfo.InvariantCulture)), "dd.MM.yyyy HH:mm:ss")
)

Когда данных нет, в текстовом поле и в выводе отображается #Error:

Строка не была распознана как допустимый DateTime

Означает ли это, что конструкция IIF вычисляет как утверждения TRUE, так и FALSE? Если да, то как я могу сделать его коротким и не преобразовывать строку, если нет данных?


person a1an    schedule 05.02.2013    source источник


Ответы (2)


Попробуйте следующее:

=IIF
(
    Fields!DateOfReg.Value= "",
    "",
    Datevalue(Cstr(Fields!DateOfReg.Value))
)
person Gil Peretz    schedule 05.02.2013

Да, вы правы - IIF вычисляет оба утверждения. Но вы можете преобразовать пустую строку в «Ничего» с помощью IIF, а затем попробовать отформатировать ее, например:

Format(IIF(Fields!DateOfReg.Value = "", Nothing, Fields!DateOfReg.Value), "yyyy/MM/dd")

Функция форматирования вызывает исключение, если вы передаете пустую строку, но возвращает пустую строку, если вы передаете «Ничего».

person Roman Badiornyi    schedule 06.02.2013