我如何获取一个TDataset来存储空字符串而不是null?

sra*_*ner 1 delphi tdataset

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

我如何获得一个delphi TDataset来使用它?将字段对象的required属性设置为true或false时,它似乎仍试图存储null而不是空字符串。

有关信息,请使用TIBDataset和TIBStringField。

Mar*_*ams 5

通常,您可以这样设置值OnBeforePost

if IBDataSet1.FieldByName('OPTION_TEXT').IsNull then
begin
  IBDataset1.FieldByName('OPTION_TEXT').Value = '';
end;
Run Code Online (Sandbox Code Playgroud)

但是,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;
Run Code Online (Sandbox Code Playgroud)

另外,如果您使用的是静态(设计时)字段,或者在创建字段的任何位置,都可以EmptyAsNull在表单的字符串字段中设置属性OnCreate