最后将ClientDataSet中数据一次更新到ADOQuery中写入数据库 [解决办法] procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet); begin ADOQuery2.Clone(ADOQuery1,ltBatchOptimistic); if ADOQuery2.Locate(...) then 重复了 [解决办法] 方法很简单,就是你在检测是否有重复值时,不能直接对ADOQuery1进行Locate, 需要借助另外一个ADOQuery来进行Locate,那么,在进行Locate之前,必须要使两个ADOQuery的Data相同 这样就不会把ADOQuery1的编辑状态取消掉, 所有在按保存时,先ADOQuery2.Clone(TAdoDataSet(ADOQuery1)); 然后if ADOQuery2.Locate('字段名','字段值',[]) then ......