C# reportviewer中的比较没有';行不通
报告中的比较是如何工作的?我尝试了下一个表达:C# reportviewer中的比较没有';行不通,c#,reportviewer,rdlc,C#,Reportviewer,Rdlc,报告中的比较是如何工作的?我尝试了下一个表达: =Iif(IsNothing(Fields!COEF.Value), 0, Fields!SUM.Value - Fields!SUM.Value / Fields!COEF.Value) 从来都不是0。然后,我将sql查询更改为当COEF为null时使COEF=0 =Iif(Fields!COEF.Value = 0, 0, Fields!SUM.Value - Fields!SUM.Value / Fields!COEF.Value) 但它
=Iif(IsNothing(Fields!COEF.Value), 0, Fields!SUM.Value - Fields!SUM.Value / Fields!COEF.Value)
从来都不是0。然后,我将sql查询更改为当COEF为null时使COEF=0
=Iif(Fields!COEF.Value = 0, 0, Fields!SUM.Value - Fields!SUM.Value / Fields!COEF.Value)
但它总是通过表达式进行计算。问题是在得到结果之前对
IIf
的真/假部分进行评估。但是您可以编写自己的简单函数来克服这个限制
例如-在您的报告->报告属性->代码中
Public Function SafeDiv(n as decimal, d as decimal) as decimal
If d = 0
SafeDiv = 0
Else
SafeDiv= n / d
End If
End Function
然后在你的房子里
=Fields!SUM.Value - Code.SafeDiv(Fields!SUM.Value, Fields!COEF.Value)
结果集中是否有一行的系数为零?当然。但我在那里犯了错误。它似乎试图用零来分隔…如果我用常数来改变除法器,它会正常工作。这与我使用了另一个IIF类似。
=IIF(Fields!COEF.Value 0,Fields!SUM.Value-Fields!SUM.Value/IIF(Fields!COEF.Value=0,1,Fields!COEF.Value),Nothing)