Delphi

FireDAC DataSet의 변경된 Record 확인

Revers Tuna 2018. 9. 10. 16:17
TFDDataSet의 변경 이력은 ChangeLog를 통해 기록에 남게 된다.
변경된 Record만 검색 하는 방법으로는 


1. FilterChange를 이용.

  
FDDataSet.FilterChange := [rtModified, rtInserted, rtDeleted];
를 하게 되면 변경된 데이터만 남게 된다.

 단점으로는 변경된 Record는 알수 있지만 변경 순서까지는 확인이 되지 않는다. 

  (Sorting이 안됨....)


2. 두번째로는 TFDDatSUpdatesJournal를 이용하는 방법이다. 
  
var
  oJournal: TFDDatSUpdatesJournal;
  oRow: TFDDatSRow;
begin
  oJournal := FDDataSet.Delta.DataView.Manager.Updates;
  if oJournal = nil then
    Exit;

  oRow := oJournal.FirstChange;
  while oRow <> nil then
  begin
    // To Do
    oRow := oJournal.NextChange(oRow);
  end;
end; 

- Data는 GetValue, GetData를 사용

  oRow.GetData("Column Name or Column Index", TFDDatSRowVersion)

  [TFDDatSRowVersion]

  rvOriginal: 원본 (OldValue)

  rvDefault: 현재값(NewValue)