有,使用ado的batchupdate模式。设定cursortype为keyset或static,设定locktype为batchoptimistic,执行的sql命令必须是select.
当ado进入batchupdate模式时,所有对于数据的修改都 是暂存在客户端中。当客户端决定把数据真正更新回数据源中时,可以调用tadodataset、tadoquery、tadotable或tadostoredproc组件的updatabatch方法,而updatebatch方法接受一个参数,这个参数代表客户端要把哪些修改的数据更新回数据源中。下面是updatebatch方法的原型:
procedure updatebatch(affectrecords: taffectrecords =arall);
updatebatch方法的参数说明如下:
arcurrent      只把目前记录的修改更新回数据集中
arfiltered     只把符合过滤条件的数据的修改更新回数据源之中
arall          把所有数据的修改更新回数据源之中
arallchapters  更新所有被影响到的chapters (ado chapters)
以下是一个调用updatebatch的示例
procedure tform1.button1click(sender: tobject);
begin
  adodataset1.updatebatch;
end;
如果程序员想取消所有客户端对于数据的修改,那么可以调用tadodataset等组件的cancelbatch方法,cancelbatch能够把客户端所有尚未更新回数据源的数据修改恢复成原来的数值,并且释放储存修改数据的资源。