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

MS-Access按员工更新统计数据异常问题求助

Access UPDATE查询错误:所有员工统计字段被更新为全表总数

我编写了一个UPDATE查询,目的是利用Beldata_filter和Urenlog_filter两个表中的员工活动数据,在Bellers_filter表中生成每位员工的绩效分析。但当前查询无法根据员工自身数据更新统计信息,反而将所有员工的总活动数批量更新到每位员工的统计字段中。

原查询代码

UPDATE (Bellers_Filter INNER JOIN Urenlog_Filter ON Bellers_Filter.Naam=[Urenlog_Filter].Naam) INNER JOIN Beldata_Filter ON Bellers_Filter.[Naam]=[Beldata_Filter].Beller SET 
 
Bellers_Filter.[Num b] = Dcount("[Beller]","[Beldata_Filter]"), 
Bellers_Filter.[Num o] = Dcount("[Opgenomen]","[Beldata_Filter]","Opgenomen = 1"), 
Bellers_Filter.[Num nno] = Dcount("[Actie]","[Beldata_Filter]","Actie = 3"), 

WHERE ([Beldata_Filter].Beller=[Urenlog_Filter].Naam);

源表数据(Beldata_filter)

BellerIDMomentOpgenomenActie
Robert558-11-202211
Susan568-11-202211
Robert559-11-202212
Robert559-11-202203
Susan569-11-202211

每条记录代表一位员工的一次操作,Urenlog_filter表格式与此相同。

期望更新结果(Bellers_filter)

IdNaamNum bNum oNum nno
1Robert321
2Susan220

当前错误结果

IdNaamNum bNum oNum nno
1Robert541
2Susan541

解决方案

修改查询,给每个DCount函数添加员工姓名筛选条件,同时优化表关联逻辑避免重复匹配:

UPDATE Bellers_Filter
SET 
    Bellers_Filter.[Num b] = DCount("[Beller]", "[Beldata_Filter]", "Beller = '" & Bellers_Filter.Naam & "'"),
    Bellers_Filter.[Num o] = DCount("[Opgenomen]", "[Beldata_Filter]", "Beller = '" & Bellers_Filter.Naam & "' AND Opgenomen = 1"),
    Bellers_Filter.[Num nno] = DCount("[Actie]", "[Beldata_Filter]", "Beller = '" & Bellers_Filter.Naam & "' AND Actie = 3")
WHERE EXISTS (
    SELECT 1 
    FROM Urenlog_Filter 
    WHERE Urenlog_Filter.Naam = Bellers_Filter.Naam
);

关键修改点

  1. 添加员工筛选条件:每个DCount的第三个参数增加Beller = '" & Bellers_Filter.Naam & "',确保只统计当前员工的记录,而非全表数据。
  2. 优化表关联:用EXISTS替代多表INNER JOIN,避免因关联导致的重复更新问题,同时保证只更新在Urenlog_filter中有记录的员工。

内容的提问来源于stack exchange,提问作者wobbe vdpas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:20:40