2016-11-24 2 views
1

Я искал помощь, но не могу найти то, что мне нужно. Я пытаюсь найти общее количество дней между двумя полями даты, однако поля инициализирующей даты могут быть из двух разных полей, например, «Дата начала» или «Дата начала». Датой окончания всегда будет одно и то же поле.Можно ли использовать DateDiff в заявлении IIF?

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

=IIF(Fields!AmendedStartDate.Value is nothing, DateDiff("d",Fields!StartDate.Value,Fields!EndDate.Value, DateDiff("d",Fields!AmendedStartDate.Value, Fields!EndDate.Value)))

Я получаю сообщение об ошибке запустить запустить это.

Я довольно новичок в построителе отчетов/SSRS, поэтому я не уверен, что то, о чем я прошу, даже возможно.

Спасибо, что нашли время посмотреть.

ответ

1

Вы не можете сделать Fields!FieldName.Value is nothing, вместо этого вам нужно IsNothing(Fields!FieldName.Value):

=IIf(IsNothing(Fields!AmendedStartDate.Value),DateDiff("d",Fields!StartDate.Value,Fields!EndDate.Value),DateDiff("d",Fields!AmendedStartDate.Value,Fields!EndDate.Value))

В качестве альтернативы, вы можете создать вычисляемое поле (так называемый сказать, StartDateToUse) с аналогичным выражением:

=IIf(IsNothing(Fields!AmendedStartDate.Value),Fields!StartDate.Value,Fields!AmendedStartDate.Value)

И затем обратитесь к этому полю в своем основном выражении, чтобы получить нужный результат:

=DateDiff("d",Fields!StartDateToUse.Value,Fields!EndDate.Value)

+0

Привет, Я пошел с вашим альтернативным выражением, и это дает мне именно то, что мне нужно. Большое спасибо. – Freddie

+0

Нет проблем, спасибо, что приняли ответ. Потребовал мне время, чтобы разглядеть функции, доступные в Report Builder (и я все еще учился каждый день!). – 3N1GM4

Смежные вопросы