这应该是一个简单的查询-我已经阅读了其他几篇文章,但无法弄清楚如何将其解决方案集成到我的查询中。
UPDATE Items_tbl
SET Items_tbl.ITEM_QTY_ONHAND =
(SELECT Sum([Item_Locations_tbl]![ITEMLOC_QTY_ONHAND])
FROM [Item_Locations_tbl]
WHERE Items_tbl.ITEM_ID =Item_Locations_tbl.ITEMLOC_LOC_ID);
答案 0 :(得分:0)
该查询不可更新,因为您正在使用聚合函数(特别是sum
)。
您可以通过使用域聚合函数来避免这种情况,例如DSum
,例如:
update items_tbl
set items_tbl.item_qty_onhand =
dsum("itemloc_qty_onhand", "item_locations_tbl", "itemloc_loc_id = " & items_tbl.item_id)
请注意,以上假设您的itemloc_loc_id
字段为数字;如果此字段是字符串值,则您需要在条件两边加上单引号,例如:
update items_tbl
set items_tbl.item_qty_onhand =
dsum("itemloc_qty_onhand","item_locations_tbl","itemloc_loc_id = '" & items_tbl.item_id & "'")
规避无法在UPDATE
查询中使用聚合函数的限制的另一种方法是生成一个临时表来存储每个记录的总和值,然后使用这些值更新表由临时表保存。