我有一个带“数量”列的多米诺骨牌视图,但是有些值是空的……并且必须是。问题是@Sum可以正常工作,直到我有一个空值,然后它停止求和。
例如:如果值是5,5,“”和5,我得到的总和是10,而不是15。
我已经将问题追溯到@DbLookup,它是当遇到空白值时停止构建返回数组。没有内置处理空值的方法。
为了使事情变得更困难,如果仅找到一个,则@dbLookup返回一个字符串;如果发现多个,则返回一个数组。如果值为5,5,“”和5,则返回2个值的数组。
var alloc = @Sum(@DbLookup(@DbName(), "SubForms",MainFrmID , "ca_ca_ca_ca_amount"));
if (isNaN(alloc)){
return "$0.00";
}else{
return "$" + alloc.toFixed(2);
}
有人可以帮助我重构@sum或@DbLookup以允许空值吗?不幸的是,我无法为此解决方案定义任何新功能。环境被严格锁定。清单中的值为5,5,“”和5,我需要总和为15。
答案 0 :(得分:1)
我会尝试@Sum(@TextToNumber(@Trim(@Text(@DbLookup(...)))))
答案 1 :(得分:0)
我会尝试 @Sum(@Transform(@Dblookup(....
答案 2 :(得分:0)
如果@DbLookup无法满足您的需要,则您始终可以遍历文档或查看条目以构建总和。
流程大致如下:
1.获取当前数据库的句柄。
2.获取“ SubForms”视图的句柄。
3a。如果存在显示所需值的视图列,则使用以MainFrmID作为键的getAllEntriesByKey()获取视图条目集合。
-或-
3b。如果不存在显示所需值的视图列,请使用以MainFrmID作为键的getAllDocumentsByKey()获取文档集合。
4.使用getColumnValues()。get(columnNumber)访问每个视图条目中的值,或使用getItemValueDouble(fieldName)访问每个文档中的值,对集合进行迭代以汇总值。
这样,您可以轻松检测空值并将其丢弃。