StatusFilter на ClientDataSet - PullRequest
       38

StatusFilter на ClientDataSet

2 голосов
/ 06 октября 2011

У меня возникли некоторые трудности с использованием ClientDataSet.StatusFilter := [usDeleted].
Это ничего не делает.Мой ClientDataSet подключен к провайдеру.
При применении StatusFilter DataSet не отображает удаленные записи.
Он просто показывает записи, как до применения StatusFilter.

Нас другой стороны.Если я использую ClientDataSet.CreateDataSet, который не подключен к провайдеру, и использую только ClientDataSet как набор данных в памяти, тогда StatusFilter работает, как описано в документации.
DataSet отображает только удаленные записи.
ClientDataSet.UpdateStatus также показывает правильный статус usDeleted.

Единственный способ получить мой первый ClientDataSet, подключенный к провайдеру для отображения удаленных записей, - использовать свойство ClientDataSet.Delta.Но это не позволяет мне вернуть удаленную запись.

//Note: cds.LogChanges = true
cds := TClientDataSet.Create(nil);
cds.Data := MyClientDataSet.Delta;
cds.First;

while not cds.eof do
begin
  case cds.UpdateStatus of    
    usModified:    
      begin    
        ShowMessage('Modified');    
        cds.RevertRecord;    
      end;
    usInserted: ShowMessage('Inserted');
    usDeleted: ShowMessage('Deleted');    
  end; 

  cds.Next;    
end;    

cds.Free;

Что я делаю не так?

1 Ответ

0 голосов
/ 23 марта 2013

Код, который вы описываете

ClientDataSet1.StatusFilter := [usDeleted];

- это правильный способ включить в ваш текущий ClientDataSet просмотр только те записи, которые были удалены.Я не понимаю, почему он не работает для вас, поскольку я использую этот подход в своем коде все время, и он никогда не подводил.Единственное, о чем я могу думать, это то, что вы, возможно, вызывали ApplyUpdates или CancelUpdates до установки свойства StatusFilter, или у вас может быть LogChanges, установленный в False (по умолчанию это True).Фильтр состояния устанавливает для него пустой набор, например:

ClientDataSet1.StatusFilter := [];

, который будет содержать вставленные, измененные и неизмененные записи в вашем представлении.Удаленные записи не будут отображаться в текущем представлении.

...