procedure TMain.adoBeforePost(DataSet: TDataSet);
begin
  if messageDlg('你已经做了修改,是否要保存所做的修改?',mtConfirmation,[mbYes, mbNo],0)<>mrYes then ado.Cancel;
end;
如果选否(不保存)则会在记录尾无端多出一行,为什么会这样?如何修正?

解决方案 »

  1.   

    procedure TMain.adoBeforePost(DataSet: TDataSet);
    begin
       if DataSet.State in [dsEdit,dsInsert] then
       begin 
          if  application.MessageBox('你已经做了修改,是否要保存所做的修改?','提示',MB_OKCANCEL)<>idok then
          DataSet.Cancel;
      end;
    end;
      

  2.   

    then ado.Cancel;
    ~~~~~~~~~~~~~~~~~~~
    then abort;
      

  3.   

    ado.cancel; //没用,还是会自动多出1行;
    abort;//没用。这只是取消操作,而不是取消已经做的更改
      

  4.   

    procedure TMain.adoBeforePost(DataSet: TDataSet);
    begin
      if messageDlg('你已经做了修改,是否要保存所做的修改?',mtConfirmation,[mbYes, mbNo],0)<>mrYes then 
    begin
       ado.Cancel;
       abort;//中止执行
    end;
    end;