不用刪除关联,删除用关键字查询后删除(被关联表的查询语句可以参考枫叶的),关联表删除方法可以: adoquery2.sql.clear; adoquery2.sql.text:=sqlstr; adoquery2.open; adoquery2.first; while not adoquery2.eof do//开始删除 begin adoquery2.delete; adoquery2.next;//下一条 end; 请把这段语放在adoquery1.ondeforedelete事件中,如果有多个关联表要删除,我想你应该知道怎么做了
可以这样做,我举个例子,你有两个表A(sno,ssex) B(sno,sname)然后在DBGrid中你显示的是(sno,sname,ssex)现在你要删除你选中的记录在A中的那条记录,可以这么做 var id:string; begin ADOQUERY1.sql.clear; ADOQUERY1.sql.add('delete from A where sno=' + DBGrid1.DataSource.DataSet.FieldByName('sno').AsString'); end;
如三表以ID关联,如果要删除其中一条记录,就把其他的二个表ID相同的都delete掉
如:
'delete from table1 where id=' + DBGrid1.DataSource.DataSet.FieldByName('关键字段').AsString;然后再重新刷新!
再用个ADOQUERY,删除相关的纪录
再刷新
adoquery2.sql.clear;
adoquery2.sql.text:=sqlstr;
adoquery2.open;
adoquery2.first;
while not adoquery2.eof do//开始删除
begin
adoquery2.delete;
adoquery2.next;//下一条
end;
请把这段语放在adoquery1.ondeforedelete事件中,如果有多个关联表要删除,我想你应该知道怎么做了
var
id:string;
begin
ADOQUERY1.sql.clear;
ADOQUERY1.sql.add('delete from A where sno=' + DBGrid1.DataSource.DataSet.FieldByName('sno').AsString');
end;