adsSize.Filtered := true;
  adsSize.FilterGroup := fgpendingrecords;
//这样只能看到修改的记录,删除的看不到。

解决方案 »

  1.   

    fgPredicate Filters to show just deleted rows.ADOTable.FilterGroup := fgPredicate;
      

  2.   

    把记录集的CursorType设置为Dynamic(动态)或 Keyset试试
    默认的是static(静态)
      

  3.   

    ===================
    function TCustomADODataSet.GetRecordStatus: TRecordStatusSet;
    var
      Status: Integer;
      RecStatus: TRecordStatus;
    begin
      CheckActive;
      Result := [];
      if State = dsCalcFields then
        Status := PRecInfo(CalcBuffer).RecordStatus else
        Status := PRecInfo(ActiveBuffer).RecordStatus;
      for RecStatus := Low(TRecordStatus) to High(TRecordStatus) do
        if (RecordStatusValues[RecStatus] and Status) <> 0 then
          Include(Result, RecStatus);
    end;=========================
    function TCustomADODataSet.UpdateStatus: TUpdateStatus;
    var
      RecordStatus: TRecordStatusSet;
    begin
      RecordStatus := GetRecordStatus;
      if rsDeleted in RecordStatus then
        Result := usDeleted
      else if rsNew in RecordStatus then
        Result := usInserted
      else if rsModified in RecordStatus then
        Result := usModified
      else
        Result := usUnmodified;
    end;
    分析這段代碼, 它應該能獲取改變的記錄數, 可惜這段代碼寫在Private域內.
    我也沒能試過, 只是猜想.
      

  4.   

    更重要的一點線索是查看ADOTable1.CancelUpdates方法, 既然它能取消缓存中的更新.
    它應該也知道缓存的數據在那里. 呵呵! 另外可以訪問ADOTable1.Recordset對象,訪問Status,State屬性
      

  5.   

    JonnySun():
       thanks.
       我以前好象看这,他都是调用的ADO原生接口.
      

  6.   

    JonnySun() :
        你给出的代码是判断某条记录的,也就是当前记录必须在记录集中.
        即:它并没被删除.
      

  7.   

    if ADOQuery1.Modified=true then
      

  8.   

    這個問題難道csdn以前沒開過貼???? 你別在這嗆人啦! 
    看來我搞不定了. 也很難找資料. 如你找到了,別忘了通知我
      

  9.   

    jonny:
        那个fgPredicate是可以的,但不会显示出来,RecordCount会有数据。