1

我的数据库中有一个必填字段(NOT NULL),但允许使用空字符串。

如何让 delphi TDataset 使用它?将字段对象的 required 属性设置为 true 或 false 时,它​​似乎仍在尝试存储 null 而不是空字符串。

有关使用 TIBDataset 和 TIBStringField 的信息。

4

2 回答 2

5

通常,您可以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

于 2013-09-26T16:03:08.010 回答
3

TField 具有默认值的属性,但它是字符串,不幸的是,空字符串意味着没有默认值,因此对您的情况没有帮助。但是您可以从数据集中捕获 OnBeforePost 事件并检查,如果字段为 NULL,则将其设置为空字符串。

于 2013-09-26T10:32:15.473 回答