首页 > 解决方案 > 如何修复:Access VBA 中更新语句上的“操作必须使用可更新查询”

问题描述

我正在尝试在 Access VBA 中运行更新查询以从临时更改表中更新主表。这些表按以下方式组织:

     Change_Table       
B_ID          Change       New_Value
111           Email         new@.com
222           email         new2@.com

Master_Table    
B_ID    Email
111    old@.com
222    old2@.com

Successful output:

Master_Table    
B_ID    Email
111    new@.com
222    new2@.com

我确保两个表都有主键并且数据库/文件夹具有完全控制权限。数据库在我的机器上是本地的。

我开发了以下代码来执行更新:

SQL = "Update Master_Table SET Email = (SELECT Change FROM Change_Table WHERE Master_Table.B_ID = Change.B_ID)"

DoCmd.RunSQL SQL

我不断收到运行时错误“3073”:操作必须使用可更新查询。

标签: sqlms-accesssql-update

解决方案


加入表而不是嵌套。

SQL = "UPDATE Master_Table INNER JOIN Change_Table ON Master_table.B_ID = Change_Table.B_ID SET Master_Table.Email = Change_Table.Email"

使用 Access 查询生成器获取正确的语法,然后从 SQLView 复制/粘贴到 VBA。经常需要在 VBA 中做一些小的编辑,但它应该得到你想要的。


推荐阅读