2016-09-22 109 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%必要的,但我相信它們是。它看起來不像一個計算的系列會起作用。這個表情有什麼明顯的錯誤嗎?有沒有更有效的方法來做到這一點?

編輯:

所以我認爲時間線分數,從這個表達式獲得它的值返回的日期,這就是爲什麼它沒有出現在報告中,當我運行一個包含報表的頁面。我嘗試在整個表達式中使用= CInt(Format()),但這不起作用。

這裏是正在發生的事情的截圖:

我只有在數據庫中的一個行,但應該還有圖表此值上的一個點。

編輯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.我添加了一些我剛纔注意到的更多細節,有什麼想法? –

相關問題