Dein Code ist sehr umständlich. Die Lösung heisst
Zwischenvariable:
Delphi-Quellcode:
var
f : TField;
begin
CheckCertified := False; // sollte nicht fehlen, da CheckCertified ansonsten undefiniert sein könnte
for i := 1 to DataSet.FieldCount-1 do
begin
f := Dataset.Fields[i];
if f.FieldName = 'DONE' then
begin
if f.NewValue<> f.oldValue then CheckCertified := False;
end else
begin
if f.NewValue<> f.oldValue then CheckCertified := True;
end;
end;
Damit ist die Sache schon viel übersichtlicher.
Dann gibt es noch einen logischen Fehler.
Die Variable
CheckCertified kann bei jedem Feld neu gesetzt werden.
Das letzte veränderte Feld entscheidet über den Inhalt von CheckCertified.
Es ist also wichtig, an welcher Feldposition das Feld 'DONE' steht.
Aber das willst du sicher nicht, oder?