2009-08-06 35 views
2

我設立一個基於ADO的客戶端數據集,當我嘗試插入一個空值到TIntegerField,對後我得到Project raised exception class EDatabaseError with message 'Non-nullable column cannot be updated to Null'.如何聲明一個TField爲空?

我知道我已經看到了一種方法來設置一個TField爲可爲空之前,但我不記得在哪裏或如何。有誰知道如何解決這一問題?

編輯:該字段在設計時被設置爲Required = false,並且我已驗證它在運行時仍然爲false,但仍然出現錯誤。

回答

4

您是否驗證過該字段代表的的db字段是否爲nu約束?

+0

*嘆*當然。這就是問題... – 2009-08-07 04:05:47

+0

hehehehe ...這一次發生在我身上多次...這是我驗證的第一件事之一... ;-) – 2009-08-07 05:22:13

1
MyField.Required := False; 
0

從幫助德爾福5:

property Required: Boolean; 

但要注意的:

property CustomConstraint: String; 

同樣的類中的某些實施從TDataSet的繼承可能會增加一些自己的邏輯...

+0

是的,顯然這就是這種情況。 – 2009-08-06 21:13:31

0

我不知道這是否會有所幫助,但聽起來很熟悉。檢查提供CD的ado數據集字段的屬性。我知道在d7中,cds在內部採用提供者數據集的只讀屬性,而不管其自己的只讀設置。同樣的問題可能適用於所需的財產。