RDLC表达式导致#error

Hun*_*rX3 3 sql reporting rdlc visual-studio-2010 reporting-services

我有两个十进制字段,利润和收入.它们显示在tablix控件中,每个都有自己的列.在第三栏中,我想将利润除以收入.当这些字段中的任何一个为零时的结果是#error,我猜这是由于除以零.我想出了以下表达式来解决这个问题:

=iif(Cint(Fields!revenue.Value) = 0 orelse cint(Fields!profit.Value) = 0 ,"",FormatPercent(Fields!profit.Value / Fields!revenue.Value,2))
Run Code Online (Sandbox Code Playgroud)

那个表达式仍会导致#error.我做了一些测试并取出了表达式的错误部分.表达式如下:

=iif(Cint(Fields!revenue.Value) = 0 orelse cint(Fields!profit.Value) = 0 ,"No","Divide")
Run Code Online (Sandbox Code Playgroud)

运行该表达式时,具有#error的原始点现在显示"否".这告诉我表达式正如我所期望的那样工作,但是为什么当我在false条件下添加除法时它会抛出#error.它不应该击中表达的那一部分.任何帮助表示赞赏.我也尝试了一个switch语句但结果是一样的.每当我在表达式中进行除法时,它就会抛出#error.

Jam*_*e F 10

非常类似于: Reporting Services表达式在某些情况下会出错

IIF评估所有论点.如果任何参数生成错误,那么整个函数将抛出错误,无论应该返回三个参数中的哪一个.

试试这段代码:

=iif(Cint(Fields!revenue.Value) = 0,"",FormatPercent(Fields!profit.Value / iif(Cint(Fields!revenue.Value) = 0, Fields!revenue.Value, 1 ),2))
Run Code Online (Sandbox Code Playgroud)

这段代码有第二个iif,它可以防止任何参数除以零.(我将代码直接编辑到浏览器中:它可能需要进行小的调整.另外,你真的应该使用单元格或占位符属性来格式化为百分比,而不是表达式.)