У меня есть простой набор данных со следующей структурой:TBlobField.OldValue всегда показывают нуль в BeforeUpdateRecord и AfterUpdateRecord случае
Server.FieldDefs.Add('Code', ftString, 5);
Server.FieldDefs.Add('Memo', ftMemo, 0);
Server.FieldDefs.Add('Blob', ftBlob, 0);
The Dataset имеет одну запись. Затем я извлекаю набор данных через TDataSetProvider в экземпляре TClientDataSet, внося изменения в данные и ApplyUpdate. Он должен инициировать событие BeforeUpdateRecord и AfterUpdateRecord для TDataSetProvider.
Однако OldValue поле ftBlob всегда показывают 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 не возвращает правильный результат тоже. Поле OldValue ftMemo всегда является пустой строкой.
Я сообщил об этом проблеме RSP-15519. Из этого также может загрузиться образец проекта.
Просто интересно, если это дизайн Мидаса? Или это ошибка?
Какова была ценность поля «Blob» в таблице перед записью? Держу пари, что это было нулевым. Кроме того, вы должны показать нам код Delphi, а не ваш псевдокод. Вы заставляете нас угадывать. – nolaspeaker
посмотреть, будет ли настройка dspropINCLBLOBSINDELTA делать трюк – vavan