使用TIBDataset如何将DateTime字段设置为null

时间:2014-08-22 13:56:11

标签: delphi delphi-2010

TField.Clear在DateTime字段上不起作用,就像它对整数字段一样。 那么如何将该字段设置为null?

我正在使用Delphi 2010。

目前我这样做;

IBDataset1.FieldByName('EUL_START_DATE').Clear;

但是该字段未设置为null,它仍包含日期值。

我认为这解释了它,但我不想搞乱核心delphi文件。 http://qc.embarcadero.com/wc/qcmain.aspx?d=78920

如果我需要重新安装Rad Studio,该怎么办?我必须记住所有这些小补丁。

1 个答案:

答案 0 :(得分:0)

在第3480行的IBCustomDataset单元中注释掉以下行;

//if TIBStringField(Field).EmptyAsNull then
//  rdFields[FMappedFieldPosition[Field.FieldNo - 1]].fdIsNull := True
//else
//begin
//  rdFields[FMappedFieldPosition[Field.FieldNo - 1]].fdDataLength := 0;
//  rdFields[FMappedFieldPosition[Field.FieldNo - 1]].fdIsNull := False;
//end

并添加以下行;

//NewCode IbCustomDataSet.pas Line 3480
begin
  if (Field is TIBStringField) and
    (not TIBStringField(Field).EmptyAsNull) then
  begin
    rdFields[FMappedFieldPosition[Field.FieldNo -  1]].fdDataLength := 0;
    rdFields[FMappedFieldPosition[Field.FieldNo - 1]].fdIsNull := False;
  end
  else
    rdFields[FMappedFieldPosition[Field.FieldNo - 1]].fdIsNull := True;
end
//End New Code

此处找到解决方案; http://qc.embarcadero.com/wc/qcmain.aspx?d=78920

经过测试,似乎工作正常。

如果您需要重新安装rad studio,请记住要记下,需要重新应用此补丁。