从多个表中删除数据

时间:2009-07-15 13:40:30

标签: sql ms-access vba syntax

我有以下查询,它将从多个表中删除数据

它不起作用

请帮帮我:

DoCmd.RunSQL ("delete tblTesting,tblCodes,tblContract,tblScheduled,tblAbsense,tblClock from tblTesting,tblCodes,tblContract,tblScheduled,tblAbsense,tblClock where tblTesting.TestId = " & lstResults.Column(1) & " And tblTesting.Empid = " & Me.txtEmpIdSearch.Value & " And (tblTesting.Empid= tblCodes.EmpId Or tblTesting.Empid= tblContract.EmpId Or tblTesting.Empid= tblScheduled.EmpId Or tblTesting.Empid= tblAbsense.EmpId Or tblTesting.Empid= tblClock.EmpId ) ")

3 个答案:

答案 0 :(得分:5)

您的SQL语句错误。您不能以这种方式从多个表中删除。请逐页查看here如何完成。

答案 1 :(得分:1)

您的删除必须一次只能是一个表 - 这就是SQL的工作方式。有些工具可以让你将几个SQL语句放在一个字符串中:

"delete table1 where RowId=123; delete table2 where RowID=456; delete table3 where RowID=789;"

刚刚验证此方法 NOT 在Access中工作。因此,您正在为每个表查看单独的DoCmd.RunSQL行。

当然,除非这些都是父/子表,否则您可以启用级联删除。然后只需从父表中删除并享受魔法。

答案 2 :(得分:0)

您需要一次只执行一个表,但除了无法从多个表中删除这一事实外,您不应在delete子句中指定列 - delete始终处理整行。