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

时间:2019-07-20 12:31:50

标签: sql ms-access ms-access-2016

我正在尝试更新一个表中的列以将其值设置为另一表中的记录数。产生错误:

  

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

查询:

UPDATE Tracking SET BatchCount = (Select Count(*) from Batch)
WHERE ReportingDate=Date();

Access似乎不喜欢Select Count(*) from Batch子查询。如果我将其替换为文字值,则可以正常工作。

任何解决此问题的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

不幸的是,这是MS Access使用的JET数据库引擎的固有限制:update查询的任何部分都不能使用聚合,否则结果记录集将不可更新。


有两种解决方法:

您可以使用域聚合函数,例如DCount

update tracking set batchcount = dcount("*", "Batch")
where reportingdate = date();

或者,您可以使用临时表存储计数结果,然后使用表中保存的值更新记录,例如

select count(*) as cnt into temptable from batch
update tracking, temptable set tracking.batchcount = temptable.cnt
where tracking.reportingdate = date();