reporting-services - SSRS 表达式在 rdl 中除以零
问题描述
我应该如何处理SSRS 2017rdl
表达式中除以零的错误?
我尝试了以下方法,但没有任何效果。
1.
=iif((iif((SUM(Fields!Consumption.Value)/
(iif((Fields!daysINDate.Value)<=0,1,Fields!daysINDate.Value))*30)<=0,0,
(SUM(Fields!Consumption.Value)/
(iif((Fields!daysINDate.Value)<=0,1,Fields!daysINDate.Value))*30)))=0,0,
SUM(Fields!ClosingStock.Value)/(iif((SUM(Fields!Consumption.Value)/
(iif((Fields!daysINDate.Value)<=0,1,Fields!daysINDate.Value))*30)<=0,0,
(SUM(Fields!Consumption.Value)/
(iif((Fields!daysINDate.Value)<=0,1,Fields!daysINDate.Value))*30))))*30)
(SUM(Fields!ClosingStock.Value)/(iif((SUM(Fields!Consumption.Value)/(iif(Fields!daysINDate.Value<=0,1,Fields!daysINDate.Value))*30)<=0 ,0, (SUM(Fields!Consumption.Value)/ (iif(Fields!daysINDate.Value<=0,1,Fields!daysINDate.Value))*30)))*30)
解决方案
SSRS 检查 iff 语句的两边...如果分子或分母为 0,则会抛出错误。
解决它的一种方法是使用 VB 代码。
右键单击您的报告 -> 报告属性 -> 代码并粘贴以下代码:
Public Function NDZ(Byval a As Decimal,Byval b As Decimal, Byval c As Decimal) As Decimal
' Fix for divide by zero problem in VB
' calculates a/b and either returns result or c if b = 0
if b = 0 then
return c
else
return a/b
end if
end function
现在在您的报告中,在您要执行计算的文本框中输入以下表达式:
=code.NDZ(SUM(Fields!Consumption.Value), Fields!daysINDate.Value, 0)
因此,如果 Fields!daysINDate.Value 或 SUM(Fields!Consumption.Value) 为 0,则它将返回 0 而不是错误。
推荐阅读
- javascript - 为什么在 JavaScript 中显示数组元素的上限为 100,有没有办法在没有循环或 splice() 的情况下显示所有内容?
- python - 在 Python3 类型中创建无硬编码的 Union 类型
- django - 哪个框架最适合规格表和技术规格表程序?
- javascript - 如何使用 JS 将 HTML 标签格式转换为 Xml
- javascript - `file_get_contents("php://input")` 是从 `fetch` 获取帖子数据的唯一方法吗?使用异步和 hack 方式是否安全?
- css - 如何将元素相对于其他元素居中,但所有元素都适合使用 CSS 的祖先?
- python - Python3 ModuleNotFoundError 导入
- typescript - “Vue”类型上不存在属性“$keycloak”
- javascript - javascript。ajax调用后如何传递“this”对象?
- php - Prestashop 1.7,显示组合产品的最低价格