这就是你要求的...
Delphi 将日期存储为自 1899 年 12 月 31 日以来的天数,因此当您编写第一个日期时,您正在执行 40731(自 1899 年 12 月 31 日以来的天数)- 0,因为您尚未输入第二个日期。
除非填写两个日期,否则解决方案是不计算字段。
if (Temp.FieldByName('BIV_OD').AsDateTime > 0) and (TEMP.FieldByName('BIV_DO').AsDateTime > 0) then
TEMP.FieldByName('DAYS').AsString:= IntToStr(Daysbetween(TEMP.FieldByName('BIV_OD').AsDateTime,TEMP.FieldByName('BIV_DO').AsDateTime))
else
TEMP.FieldByName('DAYS').AsString:= ''; //don't display anything.
尽管我将网格列设置为具有整数数据类型。
if (Temp.FieldByName('BIV_OD').AsDateTime > 0) and (TEMP.FieldByName('BIV_DO').AsDateTime > 0) then
TEMP.FieldByName('DAYS').AsInteger:= Daysbetween(TEMP.FieldByName('BIV_OD').AsDateTime,TEMP.FieldByName('BIV_DO').AsDateTime)
else
TEMP.FieldByName('DAYS').Value := Null; //don't display anything.