不可更新的查询-访问

时间:2018-12-17 19:58:08

标签: ms-access

这应该是一个简单的查询-我已经阅读了其他几篇文章,但无法弄清楚如何将其解决方案集成到我的查询中。

Access Qry View

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);

1 个答案:

答案 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查询中使用聚合函数的限制的另一种方法是生成一个临时表来存储每个记录的总和值,然后使用这些值更新表由临时表保存。