操作必须使用可更新的查询 - 访问

时间:2013-04-19 05:48:47

标签: ms-access sql-update ms-access-2007

我想使用access in access - 2007

更新表
UPDATE TABLE1 A INNER JOIN (SELECT ACCODE, SUM(AMOUNT) AS SUM_AMOUNT 
FROM TABLE2 GROUP BY ACCODE) B ON A.ACCODE = B.ACCODE
SET A.TRIAL = A.TRIAL + SUM_AMOUNT

它给了我错误

  

操作必须使用可更新的查询

我尝试使用以下查询,此处没有错误

UPDATE TABLE1 A INNER JOIN TABLE2 B ON A.ACCODE = B.ACCODE
SET A.TRIAL = A.TRIAL + SUM_AMOUNT

请帮我找出第一次查询的错误

4 个答案:

答案 0 :(得分:6)

我认为Access将您的查询视为不可更新的原因是由于子查询GROUP BY。您应该能够使用DSum创建可更新的查询。

UPDATE TABLE1 AS a
SET a.TRIAL = a.TRIAL
    + DSum("AMOUNT", "TABLE2", "ACCODE=" & a.ACCODE)

如果ACCODE是文本而不是数字数据类型,请在DSum表达式中的值周围添加引号。

UPDATE TABLE1 AS a
SET a.TRIAL = a.TRIAL
    + DSum("AMOUNT", "TABLE2", "ACCODE='" & a.ACCODE & "'")

答案 1 :(得分:1)

我刚遇到此问题,这是由于桌面上的权限。我制作了链接表的副本以测试我的更新查询,并不断收到此错误消息。我很确定我的查询会没问题(这是一个简单的更新)所以我在实际的表上运行它并没有得到错误。只是想为将来遇到这个问题的其他人添加这个!

答案 2 :(得分:0)

当您访问位于不同PC上的数据库时,也会出现此错误。因此,从文件夹的安全选项卡中提供写入权限,并在共享权限选项上提供写入权限。 就我而言,这是有效的

答案 3 :(得分:0)

是的Mandeep,这就是ms-access的工作方式。

UPDATE Table1 As T1 INNER JOIN Table2 AS T2 ON T1.F1 = T2.F1
SET T1.F2 = T2.F2

当T2是查询时,此查询会引发“操作必须使用可更新的查询”错误, 即使您不更新T2。