それはあなたが求めたものです...
Delphi は、日付を 1899 年 12 月 31 日からの日数として保存するため、最初の日付を書き込むときは、40731 (1899 年 12 月 31 日からの日数) - 2 番目の日付をまだ入力していないため 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.