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

Posted

技术标签:

【中文标题】操作必须使用可更新的查询 - 访问【英文标题】:operation must use an updateable query - access 【发布时间】:2013-04-19 05:48:46 【问题描述】:

我想使用访问中的联接更新表 - 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

请帮我找出第一个查询的问题

【问题讨论】:

【参考方案1】:

我认为 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 & "'")

【讨论】:

感谢解决了我的问题,抱歉选择了造成混乱的 sql-server 标签【参考方案2】:

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

【讨论】:

【参考方案3】:

当您访问不同 PC 上的数据库时也会出现此错误。所以从文件夹的安全选项卡中授予写入权限,并在共享权限选项中授予写入权限。 就我而言,这是可行的

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

以上是关于操作必须使用可更新的查询 - 访问的主要内容,如果未能解决你的问题,请参考以下文章

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

Excel 数据到 Access DB - 获取:操作必须使用可更新查询错误

更新行给出错误操作必须使用可更新查询

Access 2016 - 简单更新查询给出“操作必须使用可更新查询”错误

操作必须使用可更新查询/SQL - VBA

部署后“操作必须使用可更新查询”