Moin,
was habe ich da denn falsch gemacht?
Wenn ich mit Exit den Block verlassen möchte, wird die finally-Anweisung übersprungen
Ein LoadFromDB liefert false. Danach möchte ich abbrechen und die Transaction abschließen.
Das passiert aber nicht. In einem "normalen" Beispiel geht es. Eine
Exception habe ich nicht.
Gibt es irgendwelche Compilerdirektiven, die das beeinflussen?
Grüße, Messie
Code:
var
idx : integer;
s : string;
begin
Result := False;
try
try
while not DM.IBCQuery1.Eof do
begin
//irgendwelche
DB-Queries
//
if not (LoadAFromDB(idx) and
LoadBFromDB(idx)) then
begin
result := False; // hier komme ich raus
exit;
end;
DM.IBCQuery1.Next;
end;
DM.IBCTransaction1.Commit;
Result := True;
except
Result := False;
end;
finally
DM.IBCTransaction1.Active := False;
end;
end;