2011-06-07 60 views
3

我有两个小数字段,利润和收入。它们显示在一个tablix控件中,每个都有自己的列。在第三栏中,我想按收入划分利润。当其中任何一个字段为零时的结果是#error,我猜这是由于除以零。我想出了下面的表达式来解决这个问题:RDLC表达式导致#error

=iif(Cint(Fields!revenue.Value) = 0 orelse cint(Fields!profit.Value) = 0 ,"",FormatPercent(Fields!profit.Value/Fields!revenue.Value,2)) 

这表达仍然导致#ERROR。我做了一些测试,并拿出了表达的错误部分。表达是这样的:

=iif(Cint(Fields!revenue.Value) = 0 orelse cint(Fields!profit.Value) = 0 ,"No","Divide") 

如果运行的表情,原来的斑点有#ERROR,现在显示“无”。这告诉我表达式正如我所期望的那样工作,但为什么当我在假条件中添加除法时抛出#error。它不应该达到表达的那部分。任何帮助表示赞赏。我也尝试了一个switch语句,但结果是一样的。它随时在表达式中划分了#error。

回答

10

非常相似: Reporting Services expression gives error in some circumstances

IIF评估所有参数。如果任何参数产生一个错误,那么整个函数将会抛出一个错误,而不管应该返回哪三个参数。

试试这个代码:

=iif(Cint(Fields!revenue.Value) = 0,"",FormatPercent(Fields!profit.Value/iif(Cint(Fields!revenue.Value) = 0, Fields!revenue.Value, 1),2)) 

该代码有不断从以往除以零任何参数第二IIF。 (我编辑的代码,直接进入浏览器:它可能需要一些小改动另外,你真的应该使用细胞或占位性为百分比,而不是你的表达格式。)

+0

谢谢你。我不知道它评估表达的两面。 – HunterX3 2011-06-07 16:13:07

+0

哇,我正要把我的头发拉出这个相同的场景。谢谢(你的)信息! WOW !! – robertmiles3 2011-11-17 14:21:15

+0

如果M $能够解决这个问题,那将会很好,所以我们不会花费太多时间来开发我们的头脑,试图为此寻找解决方法。荒谬!!! – cChacon 2016-07-21 19:20:03

1

当心,

这似乎就像您不能在报表iif表达式中使用不支持的数据类型一样。

这里是我有什么:

=IIf(Fields!MyNotSoComplexObject.Value is nothing, "No object", Fields!MyOtherField.Value) 

当“MyNotSoComplexObject”为空一切工作,当它的东西被分配,我有#ERROR。

我通过试图直接在报告中显示“MyNotSoComplexObject”发现了这一点。

我的工作就是在我的数据集中添加一个bool值,以验证“MyNotSoComplexObject”是否有值。