没有错误

时间:2015-07-06 16:13:15

标签: reporting-services iif

我有以下错误,我的表达无法理解。

=IIF(IsNothing(Fields!month.Value),"6mr",LEFT(Format(DateValue(MonthName(Right(Fields!month.Value, 2))
 + "," + 
 Left(Fields!month.Value,4)), "Y"),3) + " '" + RIGHT(Format(DateValue(MonthName(Right(Fields!month.Value, 2))
 + "," + 
 Left(Fields!month.Value,4)), "Y"),2))

没有IsNothing元素,这种方法很有效。

我已经测试了IsNothing元素,它适用于以下情况:

=IIF(IsNothing(Fields!month.Value),"6mr",0).

帮助纠正非常感谢。

1 个答案:

答案 0 :(得分:2)

您正在体验这个"问题"因为Reporting Services会评估Iif

的两面

这不是一个真正的问题,它是设计的,请参阅此technet文章了解更多详情:

  

是的,根据设计,SSRS评估True和&甚至虚假陈述   虽然条件不满意,但如果出现错误   是不对的。

现在,为了让你的表达能够发挥作用,你必须考虑Fields!month.Value即使在表达的错误部分也是如此。

所以在你的表达式中,你可以直接替换

Fields!month.Value

通过

Iif(IsNothing(Fields!month.Value), "1", Fields!month.Value)

以下是此修复程序的表达式:

=Iif(IsNothing(Fields!month.Value),"6mr",Left(Format(DateValue(MonthName(Right(Iif(IsNothing(Fields!month.Value), "1", Fields!month.Value), 2))
 + "," + 
 Left(Iif(IsNothing(Fields!month.Value), "1", Fields!month.Value),4)), "Y"),3) + " '" + Right(Format(DateValue(MonthName(Right(Iif(IsNothing(Fields!month.Value), "1", Fields!month.Value), 2))
 + "," + 
 Left(Iif(IsNothing(Fields!month.Value), "1", Fields!month.Value),4)), "Y"),2))

如果要减少表达式长度,也可以创建自定义函数或使用变量。