2015-12-14 2 views
3

SSRS возвращает #error, если оператор равен False, но No Start Date, когда инструкция верна. Я тестировал, и DateDiff верен в False стороне инструкции. Я не уверен, в каком направлении идти отсюда. Спасибо.Проблема SSRS с использованием DateDiff в заявлении IIF

=IIF(Fields!JobOrderIssueDate.Value = "", "No Start Date",DateDiff("d",Today(),Fields!ProjectedConstEndDate.Value)) 
+0

Вопросы, требующие помощи по отладке, должны включать минимальный проверяемый пример. Минимальный код, необходимый для того, чтобы мы могли локализовать вашу проблему. –

+0

@BlakeYarbrough: Хорошо, спасибо. Я обновлю. – PanczerTank

+0

Вы возвращаете два разных типа данных из вашей 'IIF' - строки, когда условие TRUE и DATE, когда условие FALSE. Где бы вы ни использовали это выражение, ожидается STRING, поэтому вы видите '# error', когда условие TRUE. Что вы пытаетесь сделать с этим выражением? Значение по умолчанию для параметра? –

ответ

2

Вы смешиваете типы данных в вашем IIF возвращения либо строки или DATE в зависимости от состояния IIF. Это не сработает.

Один подход должен был бы преобразовать тип данных, возвращаемый ложном состоянии, так что она также возвращает STRING (используя CStr()):

=IIF(Fields!JobOrderIssueDate.Value = "", "No Start Date",CStr(DateDiff("d",Today(),Fields!ProjectedConstEndDate.Value))) 

или вы могли бы получить немного больше контроля над форматированием (с использованием FormatDateTime()):

=IIF(Fields!JobOrderIssueDate.Value = "", "No Start Date",FormatDateTime(DateDiff("d",Today(),Fields!ProjectedConstEndDate.Value), DateFormat.ShortDate)) 
-1

Изменить формат для сравнения между данными и строка также не будет работать, лучший способ проверить поле Date с IsDate функции

=IIF(IsDate(Fields!JobOrderIssueDate.Value), DateDiff("d",Today(),Fields!ProjectedConstEndDate.Value), "No Start Date") 
Смежные вопросы