【发布时间】:2013-09-08 19:21:48
【问题描述】:
我收到以下错误:
项目 PAT_p.exe 引发异常类 EOleException,并显示消息“无法删除或更改记录,因为表 'tblAntwoorde' 包含相关记录”。进程停止。使用 Step 或 Run 继续。
以下代码第一次执行时出现此错误:
procedure TfrmKomp.btnTerug1Click(Sender: TObject);
begin
frmData.qryVGKompetisieDB.Active := false;
frmData.qryVGKompetisieDB.SQL.Text := 'Delete * from tblDeelnemers'; // delete from table1
frmData.qryVGKompetisieDB.ExecSQL;
frmData.qryVGKompetisieDB.SQL.Text := 'Delete * from tblAntwoorde'; // delete from table2
frmData.qryVGKompetisieDB.ExecSQL;
frmData.qryVGKompetisieDB.SQL.Text := 'SELECT * from tblDeelnemers'; // for displaying on dbgrid that records is removed
frmData.qryVGKompetisieDB.Active := true;
end;
我的数据库中的表以一对多的关系链接,其中 ID 是 tblDeelname 中的 PK,Nommer 是自动编号,而 tblAntwoorde 中的 PK。不幸的是,这是针对学校的实际评估任务,并且必须存在关系。
我想删除表格中的所有数据,但表格必须与其所有列一起保留在那里。这不一定是sql语句,我可以在delphi7中使用的任何类型的代码都可以。
【问题讨论】:
-
您是否尝试过以其他顺序删除记录?或者您可以在指定外键时使用
ON DELETE CASCADE选项自动删除。 -
正如@Inspired 所说,您可以在您的桌子上指定
cascade delete规则。然后,您将只从主表中删除记录,这样做,相关表中的所有记录也将被删除。 -
我没有将此标记为答案,因为我有一段时间没有使用 Delphi,但是您不应该在每次删除操作时关闭并打开您的 tquery 吗?
-
@Robert:不,你没有。设置
Text会替换已经存在的内容。使用Add或Append时必须使用Clear,但使用Text时则不需要。
标签: sql delphi ms-access delphi-7