我有我的數據庫中的必填字段(NOT NULL),但允許空字符串。如何獲得一個TDataset來存儲空字符串而不是null?
我該如何得到一個delphi TDataset來處理這個問題?將field對象的必需屬性設置爲true或false,它似乎仍然試圖存儲null而不是空字符串。
對於使用TIBDataset和TIBStringField的信息。
我有我的數據庫中的必填字段(NOT NULL),但允許空字符串。如何獲得一個TDataset來存儲空字符串而不是null?
我該如何得到一個delphi TDataset來處理這個問題?將field對象的必需屬性設置爲true或false,它似乎仍然試圖存儲null而不是空字符串。
對於使用TIBDataset和TIBStringField的信息。
通常情況下,你可以在OnBeforePost
這樣的設定值:
if IBDataSet1.FieldByName('OPTION_TEXT').IsNull then
begin
IBDataset1.FieldByName('OPTION_TEXT').Value = '';
end;
然而,TIBStringField有一個未公開的特性EmptyAsNull
,你必須設置爲False
。默認值是True
。當啓用此功能後,該數據集幫你的忙,並轉換爲空字符串NULL
:
你可以關閉它是這樣的:
if IBDataSet1.FieldByName('OPTION_TEXT').IsNull then
begin
TIBStringField(IBDataset1.FieldByName('OPTION_TEXT')).EmptyAsNull := False;
IBDataset1.FieldByName('OPTION_TEXT').Value = '';
end;
或者,你可以設置EmptyAsNull
屬性的字符串字段如果您使用的是靜態(設計時間)字段,或者您創建字段的位置,則在表單的OnCreate
中。
TField的屬性爲默認值,但它是字符串,不幸的是空字符串意味着沒有默認值,所以它對你的情況沒有幫助。 但是您可以從數據集中捕獲OnBeforePost事件並檢查,如果field爲NULL,則使用空字符串進行設置。
我該怎麼做?在OnBeforePost例程中,我添加了這個; if IBDataset1.FieldByName('OPTION_TEXT')。IsNull then IBDataset1.FieldByName('OPTION_TEXT')。Value:=''; – srayner
@srayner是的,它應該是足夠的。 –
對不起,我忘記補充說這不起作用,因爲是給OPTION_TEXT列'驗證錯誤,'*** *** null ***'' – srayner