我有一个DBGrid1,DataSourc1,ADOTable1,Button1,Button2
DBGird.DataSource := DataSource1;
DataSource1.DataSet := ADOTable1;
ADOTable1连接一个ACCESS数据库中的一个表
然后我在Button1的Click事件中添加这样一个语句
ADOtable1.InsertRecord(........);
如果点击后直接关闭程序,那么数据将会直接存入数据库中
所有,Button2的Click事件我是想做为撤销的,
但是应该用ADOTable1的那一个方法呢?
CancelBantch()
Cancel()
CancelUpdate();
我都试过了,好像都没有用啊而且一旦执行了InsertRecord(),我用ACCESS查看数据库,发现插入的数据已经存在了,哪位好心给我解释一下好吗,我查了书还是没有头绪

解决方案 »

  1.   

    只能这样吗?
    以前我记得数据库都有一个还原功能的啊
    比如Update()什么的,如果没有Update,数据是不会写到数据库中去的啊
    以前在vb中的RecordSet中,AddNew()可以插入一条数据,然后Update才会回写到数据库中去的
    怎么Delphi就不一样了呢?还是我实现的方法不对啊
      

  2.   

    是否只有对TQuery等等的通过SQL语句Select选取出来的数据集才可以Cancel()吗?数据库编程我真的不是特别了解,各位帮忙了
      

  3.   

    设置TADOQuery的LockType := ltBatchOptimistic;
    UpdateRecord 保存数据;
    CancelUpdates取消保存;