我有一个包含多个视图的 Infopath 2007 表单,旨在在浏览器中使用。我在重复表中预填充字段时遇到问题,从给定值开始,然后使用公式派生的默认值。
就Summary
观点而言,我要求一个项目TotalCost
和当前财政年度的预计支出(CurrentFYSpend
):
+------------------------------+ | 项目总结 | +------------------------------+ | 总成本:100,000 美元 | - 总消耗 | 当前财政年度支出:$ 25,000 | -- CurrentFYSpend +------------------------------+在下一个 (
Detail
) 视图中,我有一个重复表FYSpending
,用户需要在其中分解项目 TotalCost
在任意数量的财政年度内。该FYSpending
表有一个YearlyCost
字段保存当年的估计支出。在重复表下我有RunningTotal
和Remaining
字段。RunningTotal
默认值为sum(YearlyCost)
; Remaining
默认值为TotalCost - sum(YearlyCost)
; 它们一起向用户显示已经占了总数的多少,以及他们还需要多少才能进入财政年度行。
当我们第一次进入Detail
视图时,重复表YearlyCost
的第一行的字段FYSpending
应该填充CurrentFYSpend
值:
+--------------------------------+ | 项目详情 | +--------------------------------+ | 总成本:100,000 美元 | <- 总成本 | | | 财政年度支出:| | +----------------------------+ | <- FYSpending 重复表 | | 风云 | 年费 | | +----------------------------+ | <- FYSpending 重复表 | | 2009 | 25,000 美元 | | <- YearlyCost[1],来自汇总 CurrentFYSpend | +----------------------------+ | | | 添加会计年度 | | | +-----------------+ | | | | 运行总额:$ 25,000 | | 剩余:$ 75,000 | <- TotalCost - sum(YearlyCost) +--------------------------------+
当用户添加新的会计年度行时,我希望将新行YearlyCost
字段的默认值计算为剩余金额YearlyCost[n] = TotalCost - sum(YearlyCost)
::
+--------------------------------+ | 项目详情 | +--------------------------------+ | 总成本:100,000 美元 | | | | 财政年度支出:| | +----------------------------+ | | | 风云 | 年费 | | | +----------------------------+ | | | 2009 | 25,000 美元 | | | | 2010 | 50,000 美元 | | -- YearlyCost[2],按添加行的规则计算 | +----------------------------+ | | | 添加会计年度 | | | +-----------------+ | | | | 运行总额:$ 75,000 | | 剩余:$ 25,000 | +--------------------------------+
我遇到了麻烦,因为这两个预填充操作相互冲突,并且似乎正在创造一种竞争条件。我尝试在 ' 字段上设置规则Summary
来CurrentFYSpend
设置 's 的值FYSpending
,然后在要设置的字段上设置YearlyCost
默认值。当我保存表单时,我收到以下错误:YearlyCost
Value: TotalCost - sum(YearlyCost)
表单代码中出现错误。对数据中的单个更新调用 Changed 事件的次数超过了最大限制。
(感谢 InfoPath 提供此类特定的错误消息!我需要支付多少费用才能获得触发事件或您尝试更新的对象的名称?)
无论如何,任何人都可以描述实现这一目标的技术吗?总之,
YearlyCost
从前一个视图填充第一行CurrentFYSpend
- 允许覆盖第一行
YearlyCost
,并将随后添加的行的YearlyCost
默认值填充为TotalCost - sum(YearlyCost)