AdoQuery1的LockType设置成ltBatchOptimistic,数据提交失败时,AdoQuery的记录状态(是否已更改过)回不到提交前的状态,
如:表有主键约束,插入重复记录时,数据回滚后就发生这种情况,用CancelBatch(arAllChapters)也得不到原来(提交前)的数据代码如下:
    ADOConnection1.BeginTrans;
    try
      AdoQuery1.UpdateBatch(arAllChapters);
      ADOConnection1.CommitTrans;
      Application.MessageBox('数据保存成功。','提示',MB_OK+MB_ICONINFORMATION);
    except
      ADOConnection1.RollbackTrans;
      Application.MessageBox('数据保存失败。','提示',MB_OK+MB_ICONINFORMATION);
      exit;
    end;