HCL Notes:如何在视图/表单中实现预算分类滚动余额计算
用Lotus公式实现办公耗材预算余额管理方案
1. 基础数据结构设计
先搭建核心表单,包含以下字段:
Category:下拉框字段,固定选项「办公耗材」(预留扩展其他分类的空间)OpType:下拉框字段,选项为「存入」/「支出」,区分资金流向Amount:数字型字段,限制仅输入正数,记录操作金额OpDate:日期时间型,默认值设为@Now,自动记录操作时间Remark:文本型(可选),用于记录操作说明
2. 实时余额计算实现
创建一个分组视图v_BudgetBalances,用来自动汇总各分类的余额:
- 第一列:字段选择
Category,设置为「按此列分组」 - 第二列:输入公式
@If(OpType = "存入"; Amount; -Amount),然后将该列的「汇总」属性设为「总和」
之后,在需要显示办公耗材余额的位置(比如表单的展示区域、导航页面),用@DbLookup实时获取汇总值:
balance := @DbLookup("":"NoCache"; @DbName; "v_BudgetBalances"; "办公耗材"; 2; [FailSilent]); @If(@IsError(balance); 0; balance)
":"NoCache"确保每次读取最新数据,避免缓存导致的延迟[FailSilent]防止无数据时报错,配合@If将错误值转为0,保证显示正常
3. 录入金额的修正处理
因为余额是基于视图汇总计算的,只要修改对应操作文档的Amount或OpType字段,视图的汇总值会自动更新,余额同步修正。
为避免无效修改,给表单添加验证公式:
@If( @IsNewDoc; @True; @IsNumber(Amount) & Amount > 0; @True; @Failure("金额必须是正数,请重新输入") )
同时在视图中添加「编辑文档」操作,方便用户快速定位并修改错误记录,保存后余额自动更新为准确值。
4. 实时显示优化
如果需要在录入新操作时即时看到余额变化,可在表单中添加一个计算字段,把上面的余额公式填入其中,并设置字段的「刷新时计算」属性,这样每次修改Amount或OpType后,字段会自动刷新显示最新余额。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

