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,该怎么办?我必须记住所有这些小补丁。
答案 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,请记住要记下,需要重新应用此补丁。