如何判断处于批次提交状态下的ADOQUERY中
是否存在被修改但是没有提交的记录

解决方案 »

  1.   

    当每一条记录改变,而游标转移时,记录会自动post
    但可以判断当前记录是否处在编辑状态或插入状态if adoQuery1.state in [dsinsert,dsedit] then
    begin
    end;
      

  2.   

    procedure Tjinghofor.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
     //查看是否还有数据没有保存
        CanClose := dmsl.DataSetApplyUpdates(dmsl.jihoitemqu, ModalResult = mrOK);
    end;
    function tdmsl.DataSetApplyUpdates(DataSet: TDataSet; Apply: Boolean): Boolean;
    begin
      Result := True;
      with TDBDataSet(DataSet) do
      begin
        if (State in dsEditModes) or UpdatesPending then
        begin
          if Apply then
          begin
            Database.ApplyUpdates([DataSet as TDBDataSet]);
            //取消任何其他的一些变化
            CancelUpdates;
          end
          else
          begin
            if (MessageDlg('数据还没有保存,确定退出?', mtConfirmation,
             [mbYes, mbCancel],0)=mrYes) then
             CancelUpdates
            else
              Result := False;
          end;
        end;
      end;
    end;