Службы Reporting Services, получающие ошибки во время арифметической операции - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь получить разницу между двумя датами в службах отчетов SQL Server. У меня есть дата отъезда и следующая дата приезда. Я использую два IIF для подсчета дней в первом и часов, минут и секунд во втором.

=iif(IsNothing(Fields!NextEnterDateTimeUtc.Value)=False,

Floor(DateDiff(DateInterval.Second, Fields!LeaveDateTimeUtc.Value, Fields!NextEnterDateTimeUtc.Value) / 86400)

& iif(Floor((DateDiff(DateInterval.Second, Fields!LeaveDateTimeUtc.Value, Fields!NextEnterDateTimeUtc.Value)) / 86400)=1," day ", " days ") & 

Format(DateAdd("s", DateDiff(DateInterval.Second, Fields!LeaveDateTimeUtc.Value, Fields!NextEnterDateTimeUtc.Value), "00:00:00"), "HH:mm:ss")

, "No data")

И проблема в том, что после расчета, когда нет данных для полей! NextEnterDateTimeUtc.Value, я получаю сообщение об ошибке: Expression The hidden value in the text "Textbox20.Paragraphs [0] .TextRuns [0]" contains an error: An overflow occurred during the arithmetic operation.

1 Ответ

0 голосов
/ 04 июля 2018

Проблема с вами, часть выражения

DateAdd("s", DateDiff(DateInterval.Second, Fields!LeaveDateTimeUtc.Value, Fields!NextEnterDateTimeUtc.Value), "00:00:00")

Iif оценивает все выражения, даже если условия ложные

Вам нужен дополнительный Iif, чтобы всегда возвращать действительное значение для Dateadd

   DateAdd("s", Iif(IsNothing(Fields!NextEnterDateTimeUtc.Value)=False,DateDiff(DateInterval.Second, Fields!LeaveDateTimeUtc.Value, Fields!NextEnterDateTimeUtc.Value),0)

Ниже приведено полное выражение

= iif(IsNothing(Fields!NextEnterDateTimeUtc.Value)=False,

Floor(DateDiff(DateInterval.Second, Fields!LeaveDateTimeUtc.Value, Fields!NextEnterDateTimeUtc.Value) / 86400)

& iif(Floor((DateDiff(DateInterval.Second, Fields!LeaveDateTimeUtc.Value, Fields!NextEnterDateTimeUtc.Value)) / 86400)=1," day ", " days ") & 

Format(DateAdd("s", Iif(IsNothing(Fields!NextEnterDateTimeUtc.Value)=False,DateDiff(DateInterval.Second, Fields!LeaveDateTimeUtc.Value, Fields!NextEnterDateTimeUtc.Value),0), "00:00:00"), "HH:mm:ss")

, "No data")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...