【发布时间】:2021-05-06 15:21:34
【问题描述】:
我需要从一个表 (Table2) 中删除所有行(记录),这些行(记录)出现在另一个表 (Table3) 中,它们具有相同的代码(出现在“代码”列上,两个表具有相同的名称)。
我在 SQL 中找到了建议的解决方案:
DELETE Table2
FROM Table2
INNER JOIN Table3 ON Table2.Code = Table3.Code
我在 Access VBA 中的尝试。
DoCmd.RunSQL "DELETE * FROM Table2 INNER JOIN Table3 on Table2.Code = Table3.Code"
我明白了
运行时错误“指定包含要删除的记录的表”
我得到了部分工作:
DoCmd.RunSQL "DELETE * FROM Table2 WHERE Table3.Code = Table3.Code"
第二个代码打开一个弹出窗口,要求输入一个参数(我想要匹配的),它有效,但我想不输入。
解决方案:
调整 Doug Coats 提供的代码并为 Access VBA “调整”:
DoCmd.RunSQL "DELETE * FROM Table2 WHERE EXISTS ( SELECT Table3.Code FROM Table3 WHERE Table3.Code = Table2.Code )"
DoCmd.Requery
添加.Requery 以删除删除记录时出现的#Deleted。
【问题讨论】:
-
WHERE Table3.Code = Table3.Code有幸存者吗? -
灰胡子这个问题没看懂
-
我无法想象在
Table3.Code不不 等于Table3.Code的任何记录中,这种情况在DELETE * FROM Table2中呈现为partially working:有没有记录在这次尝试中幸存下来?