Undeleting Cached Records
Go Up to Using Cached Updates
To undelete a cached record requires some coding because once the deleted record is posted to the cache, it is no longer the current record and no longer even appears in the dataset. In some instances, however, you may want to undelete such records. The process involves using the UpdateRecordTypes property to make the deleted records “visible,” and then calling RevertRecord. Here is a code example that undeletes all deleted records in a table:
procedure TForm1.UndeleteAll(DataSet: TDataSet)
begin
DataSet.UpdateRecordTypes := [cusDeleted];
{ show only deleted records }
try
DataSet.First;
{ go to the first previously deleted record }
while not (DataSet.Eof)
DataSet.RevertRecord;
{ undelete until we reach the last record ]
except
{ restore updates types to recognize only modified, inserted, and unchanged }
DataSet.UpdateRecordTypes := [cusModified, cusInserted, cusUnmodified];
raise;
end;
DataSet.UpdateRecordTypes := [cusModified, cusInserted, cusUnmodified];
end;