Как мне объявить TField обнуляемым? - PullRequest
2 голосов
/ 07 августа 2009

Я устанавливаю клиентский набор данных на основе ADO, и когда я пытаюсь вставить нулевое значение в TIntegerField, при публикации я получаю Project raised exception class EDatabaseError with message 'Non-nullable column cannot be updated to Null'.

Я знаю, что видел способ установить TField как обнуляемый ранее, но я не могу вспомнить, где и как. Кто-нибудь знает как это исправить?

РЕДАКТИРОВАТЬ: для поля установлено значение Required = false во время разработки, и я убедился, что оно по-прежнему равно false во время выполнения, но я все еще получаю сообщение об ошибке.

Ответы [ 4 ]

4 голосов
/ 07 августа 2009

Проверено ли у вас поле db, которое представляет это поле есть ненулевое ограничение?

1 голос
/ 07 августа 2009
MyField.Required := False;
0 голосов
/ 07 августа 2009

Я не знаю, поможет ли это, но звучит знакомо. проверьте свойства в полях набора данных ado, который передает компакт-диски. я знаю, что в d7 cds внутренне принимает свойство readonly набора данных провайдера независимо от его собственной настройки readonly. та же проблема может относиться к обязательному свойству.

0 голосов
/ 07 августа 2009

От справки к Delphi 5:

property Required: Boolean;

но помните:

property CustomConstraint: String;

Также некоторые реализации классов, унаследованных от TDataSet, могут добавить некоторую логику самостоятельно ...

...