如何从同一个表中MSACCESS选择和更新2007

问题描述:

我希望能够选择和更新我的当前库存表如何从同一个表中MSACCESS选择和更新2007

这是我的查询:

UPDATE current_stock 
SET current_stock.quantity = 
    (SELECT quantity 
     FROM (SELECT * FROM current_stock) As current_stock1 
    WHERE current_stock1.stock_id=2) 
WHERE stock_id=1; 

如果我运行嵌套查询没有更新它工作正常,但使用它的更新语句总是返回错误:操作必须使用可更新查询

实际的问题:

我要扣除CURR (缺少操作员)查询表达使用DLookup ..

我猜嵌套使用DLookup不工作

:在根据相应的笔记本电脑ID

语法错误Bom_dell表ENT库存数量所需数量字段

UPDATE current_stock 
SET current_stock.quantity = 
    DLookup("quantity", "current_stock", "stock_id=1")-DLookup("req_quantity","Bom_dell","lap_id=DLookup("lap_id","laptop_info","model_name="Dell Inspiron"")") 
WHERE stock_id=1; 

根据你的建议我改变了代码包含SELECT语句,它的工作原理:

UPDATE current_stock 
SET current_stock.quantity = 
    DLookup("quantity", "current_stock", "stock_id=1")-DLookup("req_quantity","Bom_dell","lap_id=(SELECT lap_id FROM laptop_info WHERE model_name='Dell Inspiron')") 
WHERE stock_id=1; 

所有我需要的现在要做的,就是添加一个for循环扣除所有的数量在目前的股价表

http://tinyurl.com/7eghddq < <这里是链接到我的关系表的图像

Domain Aggregate Functions可以用来避免“操作必须使用可更新的查询“错误。

就你而言,你似乎想用stock_id = 2中的数量替换stock_id = 1的数量。如果我理解正确,请尝试此UPDATE查询。

UPDATE current_stock 
SET current_stock.quantity = 
    DLookup("quantity", "current_stock", "stock_id=2") 
WHERE stock_id=1; 
+0

我将其更新m对不起编辑主要答案添加另一个问题..我很困惑如何让你知道:( – 2012-03-28 18:18:46

+0

看来你的实际情况比例y更复杂你提出了我们的问题。我的建议是编辑问题以包含更新的信息。 – HansUp 2012-03-28 18:22:06

+0

非常感谢Hans :)访问大师! – 2012-03-28 18:50:21

,如果你持有的stockId是一台笔记本电脑在表中涉及到按照这个数据模型

data model

,那么你可以用下面的SQL

UPDATE (LaptopInfo INNER JOIN BomDell ON LaptopInfo.LaptopId = BomDell.LapTopId) INNER JOIN current_stock ON LaptopInfo.StockId = current_stock.StockId SET current_stock.Quantity = [Quantity]-[ReqQuantity] WHERE (((LaptopInfo.ModelName)="Dell Inspirion")); 
+0

如何添加像这样的数据模型来解释?我应该附上一张照片吗? : -/ – 2012-03-29 10:50:55

+0

http://tinyurl.com/7eghddq 2012-03-29 11:15:22