操作必须使用可更新的查询错误访问 [重复]

Posted

技术标签:

【中文标题】操作必须使用可更新的查询错误访问 [重复]【英文标题】:operation must use an updateable query error Access [duplicate] 【发布时间】:2017-08-26 02:23:16 【问题描述】:

我有一个主表 tblBudget,其中包含像

这样的条目
ProjID Type Budget Active 
101     ROM   100      No 
101     PLE   110      No 
101     DLE   120     Yes 
102     ROM   200      No 
102     PLE   210     Yes 

每个月我都会得到一个 excel,我将其导入并存储到一个临时表 tblMonthlyBudget 中,其中包含诸如

之类的条目
ProjID Type Budget Active 
101     EAC    100    Yes
102     DLE    110    Yes 

我编写了一个更新查询,尝试将 tblBudget 中的所有 Active 条目更新为“否”,以便插入最活跃的新记录。我的查询是

UPDATE tblBudget 
INNER JOIN tblMonthlyBudget 
        ON tblBudget.ProjectId = tblMonthlyBudget.ProjectID  
SET tblBudget.Active = false

但是我得到了错误

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

即使查询似乎在数据表和设计视图中正确显示。我只有在执行查询时才得到它。我尝试搜索错误并尝试了各种组合但没有成功。欢迎任何替代方法。 我怀疑这是因为临时表包含多个记录。

【问题讨论】:

通常在两个源表上(无查询),这样的更新应该可以工作。这两者必须有一些结构性的东西。 临时表是什么意思? tblBudget 有主键吗?如果是,是什么? @Andre 谢谢你的帮助。我基于此找出了问题,我试图根据带有交叉表查询的连接来更新表。当我在临时表中插入交叉表查询的结果时,问题就解决了。 【参考方案1】:

我已尝试使用您提供的数据和表结构来复制您的问题。但是 UPDATE 按我的预期工作。如果 tblMonthlyBudget 中有重复的条目,它仍然可以工作 - 它只是更新了过多的次数。请阅读mcve 并使用实际产生错误的数据和表结构来更改您的问题。否则我们帮助你的希望几乎为零。

【讨论】:

谢谢乔纳森,我发现了问题,tblMonthlyBudget 是一个交叉表查询,它转置了另一个表。当我在临时表中插入交叉表查询的结果时,问题就解决了。出于某种原因,访问权限不允许我根据与交叉表查询的连接来更新表。 是 更新连接时访问非常严格。很高兴你把它修好了。

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

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

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

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

错误:“操作必须使用可更新的查询” - MS Access

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

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