You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何跨多表统计值为Completed的字段并实现自动更新?

Access表单自动统计完成状态字段数量

问题分析

你当前的代码存在两个核心问题:

  • 逻辑错误:原代码仅在三个状态都为"Completed"时才执行赋值,且错误地直接拼接字段值,无法实现统计数量的需求
  • 触发时机错误:仅通过点击CompletedSubTasks字段触发,无法在状态字段变更时自动更新

解决方案

1. 编写通用统计函数

创建一个独立的函数来计算所有目标状态字段中值为"Completed"的数量,方便重复调用:

Private Function CountCompletedTasks() As Integer
    Dim count As Integer
    count = 0
    
    ' 逐个检查状态字段,符合条件则计数+1
    If Nz(Me.ConceptStatus, "") = "Completed" Then count = count + 1
    If Nz(Me.ProductStatus, "") = "Completed" Then count = count + 1
    If Nz(Me.ComplianceStatus, "") = "Completed" Then count = count + 1
    ' 如果有更多状态字段,继续添加上述格式的判断
    
    CountCompletedTasks = count
End Function

注:使用Nz函数是为了处理字段为空的情况,避免空值导致判断出错

2. 绑定状态字段的AfterUpdate事件

给每个状态下拉框(ConceptStatus、ProductStatus、ComplianceStatus等)添加AfterUpdate事件,只要字段值变更就自动更新统计结果:

Private Sub ConceptStatus_AfterUpdate()
    Me.CompletedSubTasks = CountCompletedTasks()
End Sub

Private Sub ProductStatus_AfterUpdate()
    Me.CompletedSubTasks = CountCompletedTasks()
End Sub

Private Sub ComplianceStatus_AfterUpdate()
    Me.CompletedSubTasks = CountCompletedTasks()
End Sub

如果有更多状态字段,复制上述代码并修改对应的字段名即可

3. 表单加载时初始化统计值

为了确保表单打开时就显示正确的统计结果,添加表单的Load事件:

Private Sub Form_Load()
    Me.CompletedSubTasks = CountCompletedTasks()
End Sub

替换原代码

删除你原来的CompletedSubTasks_Click事件代码,替换为上述所有代码即可实现自动更新的需求。

内容的提问来源于stack exchange,提问作者Ruben Portillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:08:13