使用内置xpath函数计算字段的总和,平均值或最大值是很容易的。
但是可以计算产品吗?
假设我有像
这样的重复元素<my:table>
<my:row>
<my:value>10</my:value>
</my:row>
<my:row>
<my:value>20</my:value>
</my:row>
<my:row>
<my:value>30</my:value>
<my:row>
</my:table>
(my:row
的数量可能会有所不同。)
我需要一个公式乘以所有my:value
s:10 * 20 * 30(并使用任意数量的行)。
有什么想法吗?
请不要建议代码解决方案,我需要限制表格。
答案 0 :(得分:1)
使用conditional hack described here,我终于收集了解决方案。
在my:row
内,创建一个正在运行的产品字段my:valueCumul
,使用公式填充以引用上一行,并利用条件黑客覆盖第一行的NaN
:
../my:value *
concat(
(count(../preceding-sibling::my:row[1]) = 0) * 1,
substring(../preceding-sibling::my:row[1]/my:valueCumul, 1, (count(../preceding-sibling::my:row[1]) = 1) * string-length(../preceding-sibling::my:row[1]/my:valueCumul))
)
在表格之外,您可以轻松参考最后一行中的my:valueCumul
来获取总产品:
../my:row[count(../my:row)]/my:valueCumul
此解决方案的优点是:
答案 1 :(得分:0)
您无法使用InfoPath中的内置函数。
但是,不要这么快地注销代码解决方案。如果您只访问表单本身的数据元素(没有EXTERNAL),那么您可以将表单保留为受限制的安全性,代码将运行没有问题 - 用户不知道区别。
附加到正确的事件,抓住节点,并在乘法时循环遍历它们是相当简单的。您甚至不必使用托管代码 - 使用其中一个脚本选项。如果您遇到任何问题,请回复(或更新您的原始帖子),我们可以帮助解决这些问题。