sql - 如何修复: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”:操作必须使用可更新查询。
解决方案
加入表而不是嵌套。
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 中做一些小的编辑,但它应该得到你想要的。
推荐阅读
- java - 如何使表格根据列的总宽度调整其大小?
- python - 如何将我自己的函数放在 if 语句中?
- spring - Spring Boot 中禁止 OPTIONS 请求
- asp.net-mvc - MVC 中的按钮提交未按预期工作
- python - 如何修复 ValueError:期望属性名称:第 4 行第 1 列(字符 43)
- javascript - vue-good-table 行上是否有右键单击事件来显示上下文菜单?
- go - 将返回的错误分配给下划线
- asp.net-core - .NET core 中区域的使用
- c - 为什么我的代码块在 main() 中起作用,但在它自己的函数中不起作用?
- laravel - 我正在使用 laravel 5.6 日志,我正在尝试存储用户登录数据