2

我正在设置一个基于 ADO 的客户端数据集,当我尝试将空值插入 TIntegerField 时,在发布时我得到Project raised exception class EDatabaseError with message 'Non-nullable column cannot be updated to Null'.

我知道我以前见过一种将 TField 设置为可为空的方法,但我不记得在哪里或如何。有谁知道如何解决这一问题?

编辑:该字段在设计时设置为Required = false,我已经验证它在运行时仍然是错误的,但我仍然得到错误。

4

4 回答 4

4

您是否验证过该字段所代表的 db 字段是否具有非空约束?

于 2009-08-06T21:16:52.753 回答
1
MyField.Required := False;
于 2009-08-06T20:54:38.460 回答
0

从帮助到 Delphi 5:

property Required: Boolean;

但请注意:

property CustomConstraint: String;

此外,从 TDataSet 继承的一些类的实现可能会自行添加一些逻辑......

于 2009-08-06T20:58:14.817 回答
0

我不知道这是否会有所帮助,但听起来很熟悉。检查提供 cd 的 ado 数据集字段上的属性。我知道在 d7 中,cds 在内部采用提供者数据集的只读属性,而不管它自己的只读设置如何。同样的问题可能适用于所需的属性。

于 2009-08-07T03:40:52.060 回答