2016-09-22 76 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.我添加了一些我刚才注意到的更多细节,有什么想法? –

相关问题