次の構造を持つ単純なデータセットがあります。
Server.FieldDefs.Add('Code', ftString, 5);
Server.FieldDefs.Add('Memo', ftMemo, 0);
Server.FieldDefs.Add('Blob', ftBlob, 0);
データセットには 1 つのレコードがあります。次に、TClientDataSet インスタンスで TDataSetProvider を介してデータセットを取得し、データを変更して ApplyUpdate を実行します。TDataSetProvider の BeforeUpdateRecord および AfterUpdateRecord イベントをトリガーします。
ただし、ftBlob フィールドの OldValue は常に Null を示しますが、ftMemo および ftString フィールドは Null ではありません。
OnBeforeUpdateRecord
Code.OldValue is not null
Code.NewValue is not null
Memo.OldValue is not null
Memo.NewValue is not null
Blob.OldValue is null
Blob.NewValue is not null
OnAfterUpdateRecord
Code.OldValue is not null
Code.NewValue is not null
Memo.OldValue is not null
Memo.NewValue is not null
Blob.OldValue is null
Blob.NewValue is not null
ftMemo フィールドも正しい結果を返しませんが。ftMemo フィールドの OldValue は常に空の文字列です。
この問題をRSP-15519に報告しました。サンプル プロジェクトもそこからダウンロードできます。
これがミダスのデザインなのだろうか?それともバグですか?