IIF关键字运行不正常表达式(RDLC报告)

时间:2016-10-13 11:31:19

标签: reporting-services ssrs-2008 rdlc

我在RDLC报告中使用以下表达式。
但不知何故,我无法很好地使用它,值在报告中返回“#Error”。

=IIf(Fields!AUGNA.Value=0.00,CSTR(Fields!AUGTOT.Value) & "%",CSTR((Fields!AUGTOT.Value/Fields!AUGNA.Value)*100) & "%")

但是当我用一些字符串替换假部分时,它的工作原理非常好。

=IIf(Fields!AUGNA.Value="0.00",CSTR(Fields!AUGTOT.Value) & "%",
"REPLACED!")

我在数据集中的所有字段都是Decimal Type.i.e 72.88,0.00等。我试图用另一个IIF替换错误部分

=IIf(Fields!AUGNA.Value="0.00",CSTR(Fields!AUGTOT.Value) & "%",  IIF( Fields!AUGNA.Value <> "0.00",CSTR((Fields!AUGTOT.Value/Fields!AUGNA.Value)*100) & "%",nothing))

但这也行不通!

请帮助!
伊姆兰。

3 个答案:

答案 0 :(得分:0)

您还在“测试”部分加上双引号:Fields!AUGNA.Value="0.00" ...

如果您对发布的代码看起来更好,您会发现在第二个版本中,您不仅替换了“false”部分,还替换了“test”:

=IIf(Fields!AUGNA.Value="0.00",CSTR(Fields!AUGTOT.Value) & "%", "REPLACED!")

试试这个:

=IIf(Fields!AUGNA.Value="0.00",CSTR(Fields!AUGTOT.Value) & "%" ,CSTR((Fields!AUGTOT.Value/Fields!AUGNA.Value)*100) & "%")

答案 1 :(得分:0)

我通常使用自定义除法函数并将该函数称为除法。  1.右键单击“报告”区域。  2.选择“报告属性”  3.在“属性”框中,选择“代码”并将以下代码放在框中。

  Public Function Divide(ByVal numerator As Double, ByVal denominator As Double) As Double
        If denominator = 0 Then
            Return 0
        Else
            Return numerator / denominator 
        End If
    End Function

你调用这个函数的表达式看起来如下所示:

=IIf(Fields!AUGNA.Value=0.00,CSTR(Fields!AUGTOT.Value) & "%",CSTR(Code.Divide(Fields!AUGTOT.Value,Fields!AUGNA.Value)*100) & "%")

答案 2 :(得分:0)

很抱歉收到您的回复,但是如果其他人也遇到类似的问题...

看来, IIf 语句会评估两个分支,然后测试表达式的true / false。因此,如果在分支之一中有一个函数或表达式引发错误(例如被零除),则整个结果将返回 #Error
对于Switch语句似乎也是如此
我发现的唯一方法是在“报告代码”部分中创建一个自定义函数,将其发送给所需的参数,然后让它进行比较并返回正确的值。