另一个报告设计师substring或IIf问题

时间:2015-12-18 18:12:48

标签: acumatica

我在报告上有一个数据字段,数据样本如下:

" 75,80,80,80,92" " 75,80,80,80,93" " 75" " 75,80"

如果length = 14,我创建了另一个表达式字段来尝试仅检索第三对数字,所以我有

=IIf(Len([CRCase.dtcase_Attributes])=14, Substring(Replace([CRCase.dtCase_Attributes],',',''), 4,2),'empty') 

当我运行报告时,我可以得到" 80"对于前两行,但对于底部两行的错误。有办法解决吗?

感谢。

3 个答案:

答案 0 :(得分:0)

我想到的一个解决方法是使用padright使字符串具有相同的长度。

但仍然想知道为什么布尔表达式的第一部分没有为短字符串返回false。

答案 1 :(得分:0)

我遇到过同样的问题。 IIf的真实部分是评估所有记录,无论它们是否符合条件。对于不符合条件的记录,它没有对真实值做任何事情,但它仍然试图评估它没有任何意义。

答案 2 :(得分:0)

正如蒂姆提到的那样。评估完整的公式以解析结果 换句话说,它正在使用它 1)评估True方法 2)评估假方法 3)评估比较 4)通过比较显示真/假。

在你的情况下,结果归结为:

IIF(true,{substringvalue},{skipped}) for the first two rows and
IIF(false,ERROR,'empty') for the rest.   

由于尝试评估真实部分时出现“错误”,整个公式失败。

Padding是这里的一个解决方案。

确保占用空值。你无法填补空值。