Копирую TClientDataSet->Delta
в TPacketDataSet->Data
. Затем я использую TPacketDataSet->Data
для записи кэшированных обновлений в запись базы данных Faircom Server ISAM. При использовании пары «Измененная запись» вторая копия записи, помеченная как «usModified», содержит все поля, измененные или нет, с неизмененными полями, содержащими NULL
в качестве NewValue
. Вопрос: Как я могу определить, какие поля содержат NULL
значение, потому что они были намеренно изменены на NULL
, а какие поля - NULL
, потому что они не были изменены? Простая запись NewValue
на уровень сохраняемости приведет к очистке всех значений полей, которые не были изменены.
В записи TPacketDataSet- ›Data usModified, как я могу определить, какие поля содержат значение NULL, потому что они были намеренно изменены на NULL?
comment
Как насчет проверки OldValue поля?
- person Victoria   schedule 01.02.2018
comment
Это действительно не помогает. Если NewValue имеет значение NULL, если не изменено, и NULL, если оно изменено на NULL, сравнение его с OldValue не проясняет намерение.
- person Alan Taylor   schedule 02.02.2018
Ответы (1)
используйте InitAltRecBuffers и посмотрите, не присвоено ли NewValue значение (не изменено) или равно Null (очищено)
person
vavan
schedule
02.02.2018
Вы можете привести пример?
- person Alan Taylor; 02.02.2018
Спасибо, ваван. Решением было тестирование NewValue для VarIsEmpty (Unassigned).
- person Alan Taylor; 05.02.2018