Hier scheint mir Abkunft (Abfahrtzeitpunkt) und Ankunft bei der Auswertung vertauscht zu sein.
Da jeder Eintrag einen Abfahrtzeitpunkt hat, sollte sich die Bedingung doch auf die Ankunft beziehen.
Delphi-Quellcode:
procedure TDMED.FDQAktuelleTermineAnkunftChange(Sender: TField);
var
StartTime: TDateTime;
EndTime: TDateTime;
HourDifference: Double;
begin
StartTime := FDQAktuelleTermine.FieldByName('Abkunft').AsDateTime;
EndTime := FDQAktuelleTermine.FieldByName('Ankunft').AsDateTime;
if (StartTime <= 0) or (EndTime <= 0) or (StartTime > EndTime) then
begin
FDQAktuelleTermine.FieldByName('Dauer').Clear;
end
else
begin
HourDifference := HourSpan(StartTime, EndTime);
FDQAktuelleTermine.FieldByName('Dauer').AsFloat := HourDifference;
end;
end;