在SSRS中给出错误的表达式

问题描述:

我在SSRS中使用下面的表达式,但没有给出预期的结果。在SSRS中给出错误的表达式

=IIf(Fields!Completed_Date.Value Is Nothing, 
    Nothing, 
    IIf(First(Fields!TIMEFORMAT.Value,"dsPreferences") = True, 
     Format(DateAdd("n",Parameters!UTCOffset.Value,Fields!Completed_Date.Value),"MM/dd/yyyy hh:mm:ss tt"), 
     Format(DateAdd("n",Parameters!UTCOffset.Value,Fields!Completed_Date.Value),"MM/dd/yyyy HH:mm:ss") 
    ) 
) 

它来检查日期是null.If为null刚刚离开现场blank.If不为空,然后它有根据时区值,它是从其他资料集中得到的返回值当存在非空日期时,表达式可以正常工作,但在空日期时它会返回#error。

尝试使用此语法:

=IIf(IsNothing(Fields!Completed_Date.Value), "", <yourFalsePart>) 

这句法可能无法解决您的问题,因为Completed_Date也是在错误的部分使用。 IIf在决定使用哪一个表达式之前,运算符将始终对两个表达式进行评估:因此,如果Completed_DateNothing,则无论如何这会破坏您的表达式。

尝试使用自定义函数解释这里:SSRS expression giving error with iif condition

+0

这个已经尝试过,但没有得到预期的结果.. – Mandar 2014-10-01 14:23:26

+0

您已经尝试了什么?用“”作为真实部分?因为使用IsNothing而不是你的没有什么不是解决方案:它只是一个偏好问题。 :) – tezzo 2014-10-01 14:26:17

+0

是的,我试图把“”作为一个真正的part.it工作完全没问题,当有日期,但与空date.when问题时,我尝试只用字符串测试目的在虚假的部分它工作,但与列值它给问题。 – Mandar 2014-10-01 14:37:27