2016-09-22 2 views
0

У меня есть график линии и один из выражений серии выглядеть следующим образом:SSRS - Есть ли лучший способ сделать это выражение?

=IIF((DateDiff("dd", Fields!EstimatedImpDt.Value, Fields!ActualImpDt.Value) = 0) 
    ,100 
    ,(100 - (((DateDiff("dd", Fields!EstimatedImpDt.Value, Fields!ActualImpDt.Value)) 
       /(DateDiff("dd", Fields!CreateDt.Value, Fields!EstimatedImpDt.Value))) 
       * 100 
      ) 
    ) 
    ) 

Я проверил, чтобы убедиться, есть данные в каждом поле, и я проверил, чтобы убедиться, что все Скобки в правильном месте. Некоторые из них могут быть не на 100% необходимыми, но я считаю, что они есть. Это не похоже на то, что рассчитанная серия будет работать. Есть ли что-то явно неправильное с выражением? Есть ли более эффективный способ сделать это?

EDIT:

Так что я думаю, что Timeline результат, который получает свое значение из этого выражения возвращается в качестве даты, поэтому она не отображается в отчете, когда я запускаю страницу, содержащую отчет , Я пытаюсь использовать = CInt (Format()) вокруг всего выражения, но это не сработало.

вот скриншот того, что происходит:

У меня есть только одна строка в базе данных, но все еще должна быть точка на графике для этого значения.

EDIT 2: Итак, я понял это. По какой-то причине использование «dd» не работало. Поэтому я переключил его на DateInterval.Day, и теперь он отлично работает!

+0

Какое значение вы ожидаете? Потому что это может быть отрицательно, если я посмотрю на выражение. Является ли ось Y графика автоматически определена? Вы пытались помещать выражение в текстовое поле/матрицу и видеть, какие значения он возвращает? – NickyvV

ответ

0

Выражения выглядят ОК. У вас есть несколько дополнительных наборов скобок.

Я думаю, что ваш IIF должен проверить знаменателе

DateDiff("dd", Fields!CreateDt.Value, Fields!EstimatedImpDt.Value) 

выражения, а не числителе

DateDiff("dd", Fields!EstimatedImpDt.Value, Fields!ActualImpDt.Value) 

избежать ошибок div0.

=IIF(DateDiff("dd", Fields!CreateDt.Value, Fields!EstimatedImpDt.Value) = 0, 100, 100 - (DateDiff("dd", Fields!EstimatedImpDt.Value, Fields!ActualImpDt.Value)/DateDiff("dd", Fields!CreateDt.Value, Fields!EstimatedImpDt.Value)) * 100) 
+0

Если числитель равен нулю, он не пойдет в эту часть выражения, хотя он вернет 100. Я добавил несколько подробностей, которые я только что заметил, какие-то мысли? –

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