ClientDataSetのAfterPostイベントハンドラで、現在のレコードのApplyUpdates関数が更新または挿入を行う場合、情報が必要です。ApplyUpdatesがデータを挿入または更新するかどうかを検出するにはどうすればよいですか?
AfterPostイベントは新しいレコードと更新されたレコードに対して実行され、新しいフラグ変数を宣言して「更新」または「挿入」操作が進行中かどうかを示しません。
例コード:ApplyUpdateが完了した後
procedure TdmMain.QryTestAfterPost(DataSet: TDataSet);
begin
if IsInserting(QryTest) then
// ShowMessage('Inserting')...
else
// ShowMessage('Updating');
QryTest.ApplyUpdates(-1);
end;
アプリケーションは、AfterPost方法でログを書き込みます。このメソッドはアクションに最も近い場所ですので、このイベントハンドラに完全に挿入できるソリューションを好むでしょう。
ClientDataSetインスタンスQryTestの情報を使用して、IsInserting関数を実装するにはどうすればよいですか?
を編集してください:hereで説明されているClientDataSet.UpdateStatusを試してみます。
あなたは何をする予定ですか?検証、ユーザーインターフェイスの更新、または一部のデータ操作の更新? – zendar
アプリケーションは、ApplyUpdateが完了した後、AfterPostメソッドにログを書き込みます。このメソッドはアクションに最も近い場所ですので、このイベントハンドラに完全に挿入できるソリューションを好むでしょう。ここでデルタ配列を確認するのが最も簡単な方法です。 – mjn
これは、クライアント側でユーザーごとにログを記録する場合に最適です。すべてのユーザーの集中ログを作成する場合は、TDataSetProviderのAfterApplyUpdatesイベントでサーバー側に配置する方がよいでしょう。 – zendar