用的是什么数据库系统?
参照完整性按照 Snakeguo(枫) 设好后,只需删除主表中的一条记录即可删除从表中与之相关的所有记录,很方便.一定行得通.

解决方案 »

  1.   

    我用的是Delphi5+AdoDataSet+sql2000
      

  2.   

    删除时我是这样弄的,用SQL来删除,如果是用table来显示的话则删除后刷新一下table。
    只删除从表中的一个记录时只对从表操作,如果删除主表上的记录时,利用关联的字段值同时也删除从表中(where 关联字段=主表上的字段的值)相关的记录。
      

  3.   

    也许你应该用UPDATES一下!数据才更新!C/S的可以直接更新,但多层的一般要手动更新,
    加个UPDATE代码试试!
      

  4.   

    BDE的Cached模式(CachedUpdates:=true)请用
      try
        if myTable.CachedUpdates then
        begin
          myTable.ApplyUpdates;
          myTable.CommitUpdates;
        end
        else
          if (myTable.State=dsEdit) or (myTable.State=dsInsert) then
              myTable.Post;
      except
        Erroring('保存明细记录时出错!');
      end;
    ADO的
        try
          if ADOTable1.LockType=ltBatchOptimistic then
            ADOTable1.UpdateBatch;
        except
          Erroring('保存明细记录时出错!');
        end;
      

  5.   

    我是用的ado,也用了updateBatch啊。
      

  6.   

    我用的是adodataset.delete和adodataset.updatebatch 我想分析器中执行应该没什么问题的。
      

  7.   

    也行,但是我不太在行,还请指点,比如,我对adodataset数据集进行操作,我需要删掉其中一些记录,有人说用sql语句操作库比较好,我要找到相应记录再用adoquery写sql语句吗?完毕后,还要在adodataset对应的dbgrid中显示出来。而且,我datamoudle中的dataset和query要加很多吗?
      

  8.   

    也行,但是我不太在行,还请指点,比如,我对adodataset数据集进行操作,我需要删掉其中一些记录,有人说用sql语句操作库比较好,我要找到相应记录再用adoquery写sql语句吗?完毕后,还要在adodataset对应的dbgrid中显示出来。而且,我datamoudle中的dataset和query要加很多吗?
      

  9.   

    1、不用找到响应的记录,只要在SQL中的加WHERE条件。
      比如:query1.sql.text:='delete 从表 where 字段1=???'
                           +' delete 主表 where 字段1=???'
    2、用完QUERY后从新打开或刷新数据库,dbgrid就可以显示出来
    3、如果只做删除,datamoudle中不用加很多东西,放一个公共QUERY就行
      

  10.   

    不是什么都用QUERY。
    修改还是用ADOTABLE比较好。
    具体问题具体分析,我的意见是针对你删除主从表的问题。
      

  11.   

      with DMSales.ADODSpacking_list_det do
        begin
          if Recordset.RecordCount>0 then
             While not Eof do
               Delete;
          DMSales.adodspacking_list_hdr.Delete;
          UpdateBatch;
          DMSales.adodspacking_list_hdr.UpdateBatch;
        end;