Reporting services 报表生成器中的SSRS-IIF错误

Reporting services 报表生成器中的SSRS-IIF错误,reporting-services,null,Reporting Services,Null,我遇到了一个被零除的错误,我已经解决了一半 基本上我需要(EstimatedValuePlanned-EAC)/EstimatedValuePlanned 我有以下几点,但仍有一些错误: = IIF (Fields!EstimatedValuePlanned.Value = 0 , 0, Fields!EstimatedValuePlanned.Value - Fields!EAC.Value) / SUM(Fields!EstimatedValuePlanned.Value) 我已经更

我遇到了一个被零除的错误,我已经解决了一半

基本上我需要(EstimatedValuePlanned-EAC)/EstimatedValuePlanned

我有以下几点,但仍有一些错误:

= IIF (Fields!EstimatedValuePlanned.Value = 0 , 0, 
Fields!EstimatedValuePlanned.Value - Fields!EAC.Value) 
/ 
SUM(Fields!EstimatedValuePlanned.Value)
我已经更改了代码好几次了,但我还是得到了错误或错误


谢谢

IIF将始终计算函数的两个部分,因此当
SUM(Fields!EstimatedValuePlanned.Value)
为零时,您将得到错误,即使这不是返回的结果

尝试使用
开关
语句<代码>开关在表达式返回
True
时停止

像这样的

= SWITCH(
SUM(Fields!EstimatedValuePlanned.Value) = 0 , 0, 
True, (Fields!EstimatedValuePlanned.Value - Fields!EAC.Value) / SUM(Fields!EstimatedValuePlanned.Value)
)
True
表达式的作用与
else

使用示例更新 我创建了一个新的报表,添加了一个数据集,并将数据集查询设置为以下内容(只是为了生成一些虚拟数据)

然后我添加了一个表,将第一列分别设置为EVP和EAC,并将第三列设置为表达式,如下所示

=SWITCH (
Fields!EVP.Value = 0, 0
, True, (Fields!EVP.Value - Fields!EAC.Value) / Fields!EVP.Value
)
报表设计如下所示

当它运行时,这就是结果


尝试复制上述步骤,看看是否可以让它像这样工作,然后查看与报告的差异。

我使用它:

=IIF  (Fields!EstimatedValuePlanned.Value = 0 , 0, 
Fields!EstimatedValuePlanned.Value - Fields!EAC.Value) 
/ 
IIF(Fields!EstimatedValuePlanned.Value = 
0,1,Fields!EstimatedValuePlanned.Value)

谢谢两位

您确定这两个字段都是数字吗?我试着重复同样的操作,但没有发现任何问题。EstimatedValuePlanning和EAC都是从SQL返回的数字,而不是公式。我正在处理的字段设置为%。如果EstimatedValuePlanned=4195和EAC=1500,则我的字段返回64.24%,但是如果EstimatedValuePlanned=0和EAC=85,则我的字段显示#error,然而,当我的EstimatedValuePlanned=0时,我仍然会得到错误示例,如果它是0,EAC是85-我最终得到-85/0,这是不可能的,因此错误会返回。在您最初的帖子中,您的表达式检查了
EstimatedValuePlanned
的单行值,但是计算是基于
预计价值计划
。我认为这是一个打字错误,并改变了它,因为它没有任何意义。如果只需要在行级别进行计算,则更改
SUM(Fields!EstimatedValuePlanned.Value)
并替换为
字段!EstimatedValuePlanned.Value
在这两种情况下。抱歉,SUM只是我多次尝试中的一次:)是的,这只是行级别,我尝试了以下操作,但仍然得到了#错误似乎IIF和SWITCH仍在尝试除以0……=SWITCH(字段!EstimatedValuePlanned.Value=0,0,True,(Fields!EstimatedValuePlanned.Value-Fields!EAC.Value)/Fields!EstimatedValuePlanned.Value)我将编辑答案以显示示例。这应该有效…给我10分钟,但如果您满意,这才是最重要的!:)
=IIF  (Fields!EstimatedValuePlanned.Value = 0 , 0, 
Fields!EstimatedValuePlanned.Value - Fields!EAC.Value) 
/ 
IIF(Fields!EstimatedValuePlanned.Value = 
0,1,Fields!EstimatedValuePlanned.Value)