RDLC表达式导致#error

时间:2011-06-07 15:01:19

标签: sql visual-studio-2010 reporting-services reporting rdlc

我有两个小数字段,即利润和收入。它们显示在tablix控件中,每个都有自己的列。在第三栏中,我想将利润除以收入。当这些字段中的任何一个为零时的结果是#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的原始点现在显示“否”。这告诉我表达式正如我所期望的那样工作,但是为什么当我在false条件下添加除法时它会抛出#error。它不应该击中表达的那一部分。任何帮助表示赞赏。我也尝试了一个switch语句但结果是一样的。每当我在表达式中进行除法时,它就会抛出#error。

2 个答案:

答案 0 :(得分: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,可以使任何参数不会被零除。 (我将代码直接编辑到浏览器中:它可能需要进行小的调整。另外,你真的应该使用单元格或占位符属性来格式化为百分比,而不是表达式。)

答案 1 :(得分:1)

小心,

您似乎无法在报表iif表达式中使用不受支持的数据类型。

这就是我所拥有的:

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

当“MyNotSoComplexObject”为null时,一切正常,当它被分配时,我有#error。

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

我的工作是在我的数据集中放置一个bool值来验证“MyNotSoComplexObject”是否具有值。