Reporting services 没有错
我有下面的错误,我无法从我的表达中理解Reporting services 没有错,reporting-services,iif,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)) + ","
=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).
非常感谢帮助纠正。您遇到了这个“问题”,因为Reporting Services评估了Iif的两面
这并不是一个真正的问题,而是设计上的问题,有关更多详细信息,请参阅这篇technet文章:
是的,通过设计,SSRS甚至可以评估正确和错误的陈述
虽然条件不满足,但如果出现错误
这是不对的
现在,为了让你的表达有效,你必须考虑<代码>字段!month.Value
即使在表达式的错误部分也不能为空
=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))
所以在你的表达式中,你可以替换
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))
如果要减少表达式长度,还可以创建自定义函数或使用变量。month.value字段以前是什么样子的?预计会是什么样子?似乎您可能有一个额外的“in+”“+您可能需要单独测试
else
表达式。看看效果如何。谢谢塞巴斯蒂安,效果很好。谢谢你的深入回答。