我在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))
但这也行不通!
请帮助!
伊姆兰。
答案 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语句似乎也是如此
我发现的唯一方法是在“报告代码”部分中创建一个自定义函数,将其发送给所需的参数,然后让它进行比较并返回正确的值。