如果按你的想法cachedupdates应该设置为True吧

解决方案 »

  1.   

    也可以用事务处理!界面上放置一个save按钮,只有用户确认后才commit!否则rollback;
    不过这样频繁post可能消耗很多网络资源,所以建议结合楼上的方法,用cachedupdate;!
      

  2.   

    楼上能不能说得清楚一些阿。我把cachedupdates设为true也没有什么效果阿,和以前的结果一样。
      

  3.   

    用Database时默认的事务是一移开当前记录便提交,请改变一下Database的事务属性
      

  4.   

    cachedupdate:=true时
    要用提交table.applyupdate方法,取消用cancelupdate;
      

  5.   

    sorry,打字循序有误!
    提交要用table.applyupdate方法,取消用cancelupdate;最好在前面再加一句:
    if table.state in[dsedit,dsinset] then table.post;
    后再table.applyupdate'
      

  6.   

    你用dbgrid那当然,因为你移行时自动触发post事件!
    但是用cachedupdate的话是不会提交到数据库的!如果用了事务处理,就算已经提交,还是可以回滚的!
      

  7.   

    怎样才能让dbgrid在移行时不自动的触发post事件阿??等修改完多条后一起写回数据库?
      

  8.   

    你可以先吧cachedupdates设置为True;然后用事务提交,成功的话就是Commit失败的话就是Rollback掉。
    with Table do
     begintrans
      try
       保存;
       commit;
      except 
       rollback;
     committrans;
      

  9.   

    delphi5默认的事务处理方式是一行一行的处理(“隐式”事务处理方式),当你执行Post或促发Post时便自动提交。请先进入BDE Administrator中将你的数据库别名的SQL pass_through的选项改为Shared Noautocommit
    然后cachedUpdates设为TRUE.再通过database.starttrasaction,commit,rollback来“显式”处理事务.不要使用delphi默认的“隐式”事务处理方式.
      

  10.   

    to  小林你的方法我试过了,好像没有用阿,我用的是delphi6不管怎么样谢谢大家了