在Delphi中用ADO进行开发,怎样才能知道ADODataSet的数据已经被修改过。
注意:ADODataSet是用“ltBatchOptimistic”缓冲模式的。请大家勇跃参加。

解决方案 »

  1.   

    if ADODataSet1.Modified then '修改'
      

  2.   

    //不知道是否理解//from
    http://kingron.myetang.com(*//
    标题:判断ADO数据集是否还有数据没有提交
    说明:等待升级
    设计:3fly
    整理:Zswang
    日期:2002-03-03
    支持:[email protected]
    //*)///////Begin Source
    function CacheNotSave(mDataSet: TCustomADODataSet): Boolean;
    { 返回ADO数据集是否还有数据没有提交 }
    var
      vFiltered: Boolean;
      vFilterGroup: TFilterGroup;
      vBook: string;
    begin
      Result := False;
      if not mDataSet.Active then Exit;
      if mDataSet.LockType <> ltBatchOptimistic then Exit;
      vBook := mDataSet.Book;
      mDataSet.DisableControls;
      try
        vFiltered := mDataSet.Filtered;
        vFilterGroup := mDataSet.FilterGroup;
        try
          mDataSet.Filtered := True;
          mDataSet.FilterGroup := fgPendingRecords;
          Result := mDataSet.RecordCount > 0;
        finally
          mDataSet.Filtered := vFiltered;
          mDataSet.FilterGroup := vFilterGroup;
        end;
      finally
        mDataSet.Book := vBook;
        mDataSet.EnableControls;
      end;
    end; { CacheNotSave }
    ///////End Source///////Begin Demo
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOTable1.UpdateBatch;
      CheckBox1.Checked := CacheNotSave(ADOTable1);
      //ActionUpdateBatch.Enabled := CacheNotSave(ADOTable1);
    end;procedure TForm1.ADOTable1AfterCancel(DataSet: TDataSet);
    begin
      CheckBox1.Checked := CacheNotSave(TCustomADODataSet(DataSet));
    end;procedure TForm1.ADOTable1AfterPost(DataSet: TDataSet);
    begin
      CheckBox1.Checked := CacheNotSave(TCustomADODataSet(DataSet));
    end;procedure TForm1.ADOTable1AfterDelete(DataSet: TDataSet);
    begin
      CheckBox1.Checked := CacheNotSave(TCustomADODataSet(DataSet));
    end;procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
    begin
      CheckBox1.Checked := CacheNotSave(TCustomADODataSet(DataSet));
    end;
    ///////End Demo