Проблема проста: у меня есть триггеры и генераторы в моей базе данных Firebird 2.1.4 для автоматического увеличения столбца при каждой вставке.
Архитектура системы выглядит следующим образом:
TSQLConnection > TSQLDataSet -> TDataSetProvider -> (DataSnap) -> TClientDataSet -> TDataSource
Однако, если я попытаюсь опубликовать обновления в моем TClientDataSet с некоторым отсутствующим столбцом, Delphi будет жаловаться так:
Field 'XXX' must have a value
Если я использую оператор вставки SQL с пропущенными полями, строка вставляется, а триггеры и генераторы работают как положено.
Как заставить Delphi (DBX, DataSnap и тому подобное) понять, что я пытаюсь сделать (и разрешить это)?
EDIT
Предоставление дополнительной информации на основе комментария @ mj2008: этот TClientDataSet создается во время выполнения с использованием метода CloneCursor. После вызова CloneCursor я установил для свойства поля Required значение False. Это не помогает с этой проблемой. Пример:
myCds.CloneCursor(otherCds, True);
myCds.FieldByName('XXX').Required := False;
Это приводит к тому же исключению.