用adoquery关联3个表,查询,并把结果用dbgrid显示出来,如何实现在dbgrid上选中一条记录,就可以删除和这条记录相关的3个表中某一个表的一条记录呢?是不是多表关联查询的结果无法删除呢?

解决方案 »

  1.   

    记录关联的Id,然后把关联的标志都删除掉
    如三表以ID关联,如果要删除其中一条记录,就把其他的二个表ID相同的都delete掉
      

  2.   

    那怎么删呢?adoquery.delete肯定不行了
      

  3.   

    多表相联删除是不可以的,建立用CLIENTDATASET
      

  4.   

    正在学习DELPHI数据库编程,关注一下
      

  5.   

    不管是普通关联还是父子表关联,在执行adoquery.delete之前,都要在onbeforedelete事件里写入删除与之关联表的记录,这样才能删除与之关联的表的所有记录
      

  6.   

    根据你关联的数据表关键字段删除,
    如:
    'delete from table1 where id=' + DBGrid1.DataSource.DataSet.FieldByName('关键字段').AsString;然后再重新刷新!
      

  7.   

    菜鸟办法
    再用个ADOQUERY,删除相关的纪录
    再刷新
      

  8.   

    我是在access数据库里直接通过工具-关系设定表之间的关联的,编程中怎么先取消关联,删除数据后,在关联上呢?
      

  9.   

    不用刪除关联,删除用关键字查询后删除(被关联表的查询语句可以参考枫叶的),关联表删除方法可以:
    adoquery2.sql.clear;
    adoquery2.sql.text:=sqlstr;
    adoquery2.open;
    adoquery2.first;
    while not adoquery2.eof do//开始删除
       begin
         adoquery2.delete;
         adoquery2.next;//下一条
       end;
    请把这段语放在adoquery1.ondeforedelete事件中,如果有多个关联表要删除,我想你应该知道怎么做了
      

  10.   

    可以这样做,我举个例子,你有两个表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;