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
表达式。看看效果如何。谢谢塞巴斯蒂安,效果很好。谢谢你的深入回答。