在MS Access中实现从一张表向另一张表新行复制当前值
MS Access 账单数据自动填充当前费用的解决方案
方法1:利用窗体BeforeInsert事件(最常用简便)
- 先做一个绑定表2的窗体,用来新增账单记录,加个组合框选表1的客户(关联引用字段)。
- 打开窗体设计视图,找到BeforeInsert事件,写入以下VBA代码:
Private Sub Form_BeforeInsert(Cancel As Integer) ' 替换成你的实际字段名和表名:表1的客户ID字段、当前费用字段,表2的客户引用字段、账单费用字段 Me![账单费用] = DLookup("[当前费用]", "表1", "[客户ID] = " & Me![客户ID]) End Sub - 每次在窗体里新增记录,选好客户后,系统会自动把当时表1里的当前费用填到表2的费用字段,已有记录的费用完全不受影响。
方法2:追加查询批量生成账单
如果需要批量生成月度账单,用追加查询更高效:
- 创建新查询,选择表1的客户ID、当前费用,再手动添加账单月份这类固定字段(比如输入当月日期或月份标识)。
- 把查询类型改成追加查询,目标表选表2,对应好字段:表1的客户ID对应表2的客户引用字段,表1的当前费用对应表2的费用字段,其他字段按需匹配。
- 运行查询就能批量把当时的当前费用导入到新的表2记录里,不会碰已有数据。
方法3:表2字段设默认值(适合单条新增场景)
如果是单条新增记录,也可以直接给表2的费用字段设默认值:
=DLookup("[当前费用]", "表1", "[客户ID] = Forms![你的窗体名称]![客户ID]")
- 这个方法依赖打开的窗体,批量操作时不如前两种靠谱,但单条新增时不用写代码,更省事。
内容的提问来源于stack exchange,提问作者grin_phi
相关产品推荐
相关产品推荐

