我有两张主从表,我如何判断,这两张表的某张修改了,而且同时保存?
是不是两张表都要判断modified ,delete ,insert三种情况,这张表用的ado缓存的方式,请问,如何让两张表同时更新成功。 
我这样写的:
 if  (dbgridbig.DataSource.DataSet.Modified) or (dbgridsmall.DataSource.DataSet.Modified)  then
    begin
      if dbgridbig.DataSource.DataSet.Modified then
        DMpact.ADOAreabig.UpdateBatch(arAll)
      else
        DMpact.ADOAreasmall.UpdateBatch(arAll);      showMessage('数据保存成功!');
      close;
      exit;
    end
    else      close;
不知这样写可否,我这样根本没有判断是否第一张表更新成功,就更新了第二张表。而且仅通过modified不同判断出delete的,能否用一个很少的属性判断出,两张表是否修改(包括新增的和删除的)????谢谢谢谢!

解决方案 »

  1.   

    对多表更新建议你用SQL语句来做,并且写在一个事物里。
      

  2.   

    如何用sql 呢??我并不确定用户可能insert什么或是delete什么,我不能从第一行检测到最后一行,然后一行一行的insert吧????
      

  3.   

    用事务的话好像是针对database
    我使用的ado方式,根本没有用database,事务好像不行,我查了一下,好像应该是Database1.StartTransaction;没用database该如何写呢??谢谢!
      

  4.   

    看两张表的TDataSet的State就可以判断呀:
    if Table1.State in [dsInsert,dsEdit] then
     //...表明有修改动作,以下就是作你的事了
      

  5.   

    我删除的数据state始终是dsbrowse????怎么监测删除的呢?
      

  6.   

    判断数据是否更改,在OnDataChanged事件中处理比较合适吧?对于多表处理,最好采用事务处理的方式吧.
      

  7.   

    采用ado有:
       adoconnection1.begintrans;
       adocconnection1.commit;
       adoconnnection1.rollback.
      

  8.   

    to steelbar(中风) :谢谢,我试一试事务。
    你说的ondatachaned我没找到这个事件,我在adodataset组件上找到了recordssetchangecomplete,是这个么??
      

  9.   

    事务的已经解决,下面这个问题再帮我看看,谢谢,一定给分的!!!!
    delete的数据为什么监测不到呢??????我删除了dbgrid数据,不做任何其他修改,state永远是dsbrowse,如何判断是否delete,我也好保存数据呀????????谢谢!!!