您可以通过实现 TDataSetProvider.OnGetData 事件来修改进入 ClientDataSet 的数据。
procedure TDataModule1.DataSetProvider1GetData(Sender: TObject; DataSet: TCustomClientDataSet);
begin
DataSet.First;
while not DataSet.Eof do begin
DataSet.Edit;
DataSet['Surname'] := UpperCase(DataSet['Surname']);
DataSet.Post;
DataSet.Next;
end; // while
end;
从 ClientDataSet 应用更新时,您可以使用 TDataSetProvider.OnUpdateData 事件。与 OnGetData 事件一样,您正在对整个数据集而不是单个记录进行操作。
procedure TDataModule1.DataSetProvider1UpdateData(Sender: TObject; DataSet: TCustomClientDataSet);
begin
DataSet.First;
while not DataSet.Eof do begin
DataSet.Edit;
DataSet['Surname'] := LowerCase(DataSet['Surname']);
DataSet.Post;
DataSet.Next;
end; // while
end;
此 OnUpdateData 事件在 OnBeforeUpdateRecord 事件之前调用。OnGetData 和 OnUpdateData 事件也对整个数据集进行操作,而 OnBeforeUpdateRecord 为每个修改的记录调用一次。