对于ADODataSet进行Delete后为什么ADODataSet的Modified不为True???同时ADODataSet.updateState 也不在usDeleted中?这样就无法判断是否要保存数据我想通过数据集的Modified的状态来判断是否有数据被修改从而需要保存!!!

解决方案 »

  1.   

    呵自己刚写上去,自己就解决了问题,代码如下:
    function RecordNotSave(ADataSet: TADODataSet): Boolean;
    var
      vFiltered: Boolean;
      vFilterGroup: TFilterGroup;
      vBook: string;
    begin
      Result := False;
      if not ADataSet.Active then Exit;  if ADataSet.LockType <> ltBatchOptimistic then Exit;  vBook := mDataSet.Book;
      ADataSet.DisableControls;
      try
        vFiltered := ADataSet.Filtered;
        vFilterGroup := ADataSet.FilterGroup;
        try
          mDataSet.Filtered := True;
          mDataSet.FilterGroup := fgPendingRecords;
          Result := mDataSet.RecordCount > 0;
        finally
          ADataSet.Filtered := vFiltered;
          ADataSet.FilterGroup := vFilterGroup;
        end;
      finally
        ADataSet.Book := vBook;
        ADataSet.EnableControls;
      end;
    end;如果返回为true, 则代表尚有数据未保存,但是这只针对Delete,edit, 如果是insert,append,则返回为false.看来还是结合modified属性来综合作判断才行!!!