我在报告上有一个数据字段,数据样本如下:
" 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"对于前两行,但对于底部两行的错误。有办法解决吗?
感谢。
答案 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是这里的一个解决方案。
确保占用空值。你无法填补空值。