IIF
2009-11-13 09:06 蜡笔小旧 阅读(503) 评论(0) 编辑 收藏 举报project_Details_Group
=Sum(CDec(Fields!PlanAmount.Value),"project_Details_Group",Recursive)
=IIf(Sum(CDec(Fields!PlanAmount.Value),"plan_Details_Group",Recursive) <> 0 ,
Round(Sum(CDec(Fields!ContractTotalAmount.Value),"plan_Details_Group",Recursive) / Sum(CDec(Fields!PlanAmount.Value),"plan_Details_Group",Recursive),2)*100,
0.00) & "%"
//超级链接
=IIF(Parameters!IncludeURLs.Value,"http://adventure-works.com/productcatalog",Nothing)
取消运行时的空值或零值
处理报表时,表达式中某些值的计算结果可能会为空值或未定义。这将创建运行时错误,从而导致在文本框中显示 #Error,而不是计算后的表达式。IIF 函数对此行为特别敏感,因为它不同于 If-Then-Else 语句,IIF 语句的每一部分在传递到测试 true 或 false 的例程之前,都要进行计算(包括函数调用)。如果 Fields!Sales.Value 为 NOTHING,则语句 =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) 将在所呈现的报表中生成 #Error。
若要避免此情况,请使用以下策略之一:
* 如果字段 B 的值为 0 或未定义,则将分子设置为 0,分母设置为 1;否则将分子设置为字段 A 的值,将分母设置为字段 B 的值。
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))