2014-01-07 64 views
1

最近我遇到了与SSRS中使用IIF()函数不一致的问题。我正在研究具有多个条件的聚合函数。假设我有这样的代码:使用IIF()函数的SSRS Report Builder表达式错误

=Sum(IIF(Fields!MATL_STAT.Value="Disposed", Fields!MATL_SIZE.Value,0)) 

通过说明书中,表述确定MATL的大小的总和与MATL_STAT = "Disposed"但每次我运行有一个#错误的报告。

我的理论是你不能把字段放在IIF()函数的“真正选项”中。

现在,如果我的理论是正确的,是否有解决方法呢?

+0

IIRC这应该工作。你可以在其中一个领域抛出一个NULL的NULL(特别是DbNull)吗? –

+0

我已经使用'NVL()'函数消除了查询中的所有空值。顺便说一句,我使用Oracle。 –

+0

您绝对可以将字段放入IIF函数的真实选项中。有时候当你期待不同的数据类型时,你会得到#error。你可以做CStr(Fields!MATL_STAT.Value)= CStr(“Disposed”),看看你是否仍然有错误? – mmarie

回答

1

经过使用内建函数的广泛研究是SSRS报告服务后,该字段将不同数据类型(double/int)相加。统一的数据类型,我用CDbl()功能如下:

=Sum(IIF(Fields!MATL_STAT.Value="Disposed", CDbl(Fields!MATL_SIZE.Value),CDbl(0.0))) 
0

可以使用十进制转换(CDEC)以及原因是该值的输出量以小数未来..