1

Хранимая процедура включена в файл построителя отчетов типа rdl. хранимая процедура имеет много полей. Одно из полей возвращает дату (а не дату и время). Желаемый результат в отчете - показывать только дату и пустое поле, если дата не возвращается.Ошибка выражения SSRS для даты IIF с #error

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

Использование IIF для проверки значения для «ничего», как показано ниже.

=IIF(Fields!myDate.Value Is Nothing,"",Fields!myDate.Value) 

Выход такой же. Значение даты и времени отображается, когда доступна дата.

Попытка использования функции shortDateString() дает правильный результат при наличии даты, но #Error, когда дата НЕ присутствует. Это заявление:

=IIF(Fields!rlsPromoDate.Value Is Nothing, "", 
Fields!rlsPromoDate.Value.ToShortDateString()) 

Приведенная ниже версия была предпринята. Однако ошибок не было, однако дата не была возвращена, но это было «Microsoft.ReportingServices.ReportProcessing.OnDemandReportObjectModel.FieldImpl».

=IIF(Fields!myDate.Value Is Nothing,"", String.Format("{0:MM/dd/yyyy}", 
Fields!myDate)) 

Просьба сообщить, есть ли решение.

ответ

3

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

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

или любой другой формат даты вы на самом деле хотели бы использовать.

+0

Спасибо Джеффри. Ваше решение отлично работало. –

+0

Что касается того, почему ... 'IIF()' является функцией и, как вызов любой другой функции, все переданные ей аргументы оцениваются _allways_before_. Это включает в себя вашу попытку вызова метода 'toShortDateString()', который терпит неудачу, потому что значение, которое он вызывает, - Nothing. –