MS Access 根据同一 table 中其他记录的数据更新记录

MS Access Upserting Records based on Data from other records in same table

我想自动添加和更新记录来计算灯泡的总数。这是针对将出售给客户的商品的销售订单。销售人员将输入灯具的部件号、安装人员的信息以及所需物品的数量。所有其他信息将从另一个 table 中提取,我已将定价等信息排除在外,因为它不相关。

我希望订单自动为订单中需要的灯泡数量添加另一个订单项。

示例数据,由员工输入:

ID   | PartNumber | Info | Qty | BulbQty | BulbInfo
1    | 563        | Hall |  3  |    2    |   A19

当它被添加到 table 时,我想自动添加一个新记录,零件号为空,[Info] = [BulbInfo],[Qty] = [BulbQty] * [Qty ].

示例数据,加上自动行项目计算要交付的灯泡:

ID   | PartNumber | Info | Qty | BulbQty | BulbInfo
1    | 563        | Hall |  3  |    2    |   A19
2    |            | A19  |  6  |         |

现在,如果添加了带有 A19 灯泡的新订单项,我想添加到我的灯泡记录的数量(基于 Info = BulbType),而不是添加全新的记录。当然,如果记录被更改或删除,现在我需要从相关的灯泡记录中扣除。我有很多不同的灯泡类型,所以我需要它根据新传入记录的 [BulbQty] 值动态变化。

我创建了一个私人子程序,每次更新数量时都会调用它,传递 [BulbType] 和我的销售订单号,这样我就只更改当前的销售订单。

首先,如果[BulbType] 为“”,则退出潜艇。然后我使用 DCount 在 [Info] 中查找 [BulbType] 的现有实例。如果有多个实例(在我的情况下不应该有,但以防万一),提示将它们全部删除。接下来,如果有零个实例,请添加一个 [Info] = [BulbType]。然后,如果只有一个实例(现在应该有),则创建 [BulbType] 所有实例的记录集。现在只需 运行 遍历该记录集并继续添加到 totalQty 变量以获得我的总数。使用 DLookup 将该总数添加到我的销售订单中的 [Qty] 字段,因为我知道只有一个实例 [Info] = [BulbType].