В записи TPacketDataSet- ›Data usModified, как я могу определить, какие поля содержат значение NULL, потому что они были намеренно изменены на NULL?

Копирую TClientDataSet->Delta в TPacketDataSet->Data. Затем я использую TPacketDataSet->Data для записи кэшированных обновлений в запись базы данных Faircom Server ISAM. При использовании пары «Измененная запись» вторая копия записи, помеченная как «usModified», содержит все поля, измененные или нет, с неизмененными полями, содержащими NULL в качестве NewValue. Вопрос: Как я могу определить, какие поля содержат NULL значение, потому что они были намеренно изменены на NULL, а какие поля - NULL, потому что они не были изменены? Простая запись NewValue на уровень сохраняемости приведет к очистке всех значений полей, которые не были изменены.


person Alan Taylor    schedule 01.02.2018    source источник
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
comment
Вы можете привести пример? - person Alan Taylor; 02.02.2018
comment
Спасибо, ваван. Решением было тестирование NewValue для VarIsEmpty (Unassigned). - person Alan Taylor; 05.02.2018