还是用数据库,记录他的每一步操作,就可以顺序undo/redo了。

解决方案 »

  1.   

    光记录操作还不行啊,比如用户删除了一个字段,我光记录了动作,如何能undo?
      

  2.   

    我想知道如何编写Undo/Redo ,能见告吗?
      

  3.   

    让Ado进UpdateBatch模式
    如:
    AdoDataSet1.UpdateBatch;数据更新
    AdoDataSet1.CancelBatch;取消数据更新
      

  4.   

    在Clientdataset中,被修改的数据保存在了一个log文件中,如果要全部回滚,则用Cancel或CancelUpdate即可。如果要做到象word那样一步一步undo,那会比较麻烦,我想用公文包的形式应该可以做到,否则可能要自己定个数据结构出来,如链栈,则也可以做到。
      

  5.   

    可以用个方法那就是建个表专门用来记录自已删除的、修改的、更新的记录,将要UNDO、REDO的SQL语句写在这个表中。
    如:
    DELETE * FROM TABLE1 WHERE FIELD1="删除的条件"
    那么UNDO 方法就是:
    1、先保存删除记录前的数据。
    "INSERT INTO UNDO_Table_For_Table1(SELECT * FROM table1 WHERE FIELD1="删除的条件")"记录删除前的数据.
    2、写一条能UNDO的SQL语句.
    UNDO_SQL_For_Table1:的SQL为
    INSERT INTO Table1(SELECT * FROM UNDO_Table_For_Table1 WHERE FIELD1="删除的条件")
    再将UNDO的序号记录在UNDO_SQL_For_Table1中.3、恢复就找出最大的UNDO的序号的SQL语句
    运行之.这个工程量很多.