怎样将用户对数据库dbgrid的修改先记录下来,直到用户按“保存”时才保存,即把它本身自带的离开本条记录就修改屏蔽掉!

解决方案 »

  1.   

    可以先放到一个记录变量里,保存里再提交记录变量的值,或放到一个TEMP表里
      

  2.   

    搞一个临时表吧!这样还有个好处
    就是万一用户输着输着,断电了(没有UPS)那下次进取还可以保存
    多方便!
    但这样如果有好多表,都要建立临时表,有显得很臃肿!哎!
      

  3.   

    以临时表来方法对很小的表是适用的如果表很大,就不是一个好办法。我建议不用DBGrid,而用Grid,只是编程量稍大。
      

  4.   

    设置 TQuery 或 TTable 的 CachedUpdates := True;这样就不会在你新增完一条记录后直接保存进数据库里。在你按了“保存”后,用TQuery 或 TTable 的 ApplyUpdates 方法真正将变更过的记录保存进数据库。如果不想写进数据库,可以 Close TQuery 或 TTable,如果不想 Close,可以用 CancelUpdates 把所有变更的记录取消。试试看,很好用的。
      

  5.   

    用ADOQUERY就可以!
    按保存时:ADOQuery1.UpdateBatch;
    按取消时:ADOQuery1.CancelBatch(arAll);