0

我收到以下错误:

项目 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 中使用的任何类型的代码都可以。

4

1 回答 1

0

在级联删除建议之后,我何时研究它并在这里找到了一种更简单的方法。

基本上必须发生的事情是必须先删除辅助表中的数据,然后才能删除主表中的数据。

procedure TfrmKomp.btnTerug1Click(Sender: TObject);
begin
  frmData.qryVGKompetisieDB.Active := false;
  frmData.qryVGKompetisieDB.SQL.Text := 'Delete * from tblAntwoorde'; // delete from SecondaryTable
  frmData.qryVGKompetisieDB.ExecSQL;
  frmData.qryVGKompetisieDB.SQL.Text := 'Delete * from tblDeelnemers'; // delete from PrimaryTable
  frmData.qryVGKompetisieDB.ExecSQL;
  frmData.qryVGKompetisieDB.SQL.Text := 'SELECT * from tblDeelnemers'; // for displaying on dbgrid that records is removed  
  frmData.qryVGKompetisieDB.Active := true;
end;

坦克为您的评论提供所有帮助。对此,我真的非常感激。☺</p>

于 2013-09-09T01:13:03.683 回答