データベース更新前のデルタ パケットの編集

提供: RAD Studio
移動先: 案内検索

クライアントの更新要求への応答 への移動


データセット プロバイダは、データベースに更新を適用する前に、OnUpdateData イベントを発生させます。OnUpdateData イベント ハンドラは、Delta パケットのコピーをパラメータとして受け取ります。これがクライアント データセットです。

OnUpdateData イベント ハンドラでは、データセットに書き込む前に、クライアント データセットの任意のプロパティやメソッドを使用して Delta パケットを編集することができます。特に便利なプロパティが UpdateStatus です。UpdateStatus は、デルタ パケット内の現在のレコードが、どの種類の変更を表しているかを示します。このプロパティは、次の表に示すいずれかの値を取ります。

UpdateStatus の値: 

説明

usUnmodified

レコードの内容は変更されていません

usModified

レコードの内容が変更されました

usInserted

レコードが挿入されました

usDeleted

レコードが削除されました


たとえば、次の OnUpdateData イベント ハンドラでは、データベースに挿入された新規レコードそれぞれに、現在の日付を挿入しています。



procedure TMyDataModule1.Provider1UpdateData(Sender: TObject; DataSet: TCustomClientDataSet);
begin
  with DataSet do
  begin
    First;
    while not Eof do
    begin
      if UpdateStatus = usInserted then
      begin
        Edit;
        FieldByName('DateCreated').AsDateTime := Date;
        Post;
      end;
      Next;
    end;
end;
void __fastcall TMyDataModule1::Provider1UpdateData(TObject *Sender, TCustomClientDataSet *DataSet)
{
  DataSet->First();
  while (!DataSet->Eof)
  {
    if (DataSet->UpdateStatus == usInserted)
    {
      DataSet->Edit();
      DataSet->FieldByName("DateCreated")->AsDateTime = Date();
      DataSet->Post();
    }
    DataSet->Next();
  }
}

関連項目