您可以修改數據通過實施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對於每個修改的記錄都會調用一次。
+1與kbmMemTable解析器非常相似,恰好相反。 – 2010-03-31 09:08:28
我需要這樣做,但不能直到我能夠將數據導入到ClientDataSet中。我需要能夠對連接到數據庫的DataSet的數據進行相同的修改。可能嗎? – LostNomad311 2010-03-31 14:32:30
這聽起來像是想將來自2個或更多表的數據合併到一個ClientDataSet中,然後將更新應用回源表。如果是這樣的話,我只想在修改我的答案之前進行檢查。 – LachlanG 2010-03-31 19:59:38