Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

AW: finally wird nach exit nicht abgearbeitet

  Alt 11. Dez 2012, 14:05
Also mir scheint der ganze Code etwas strukturlos zu sein.
Im Prinzip muss eine Transaktion so ablaufen:
Delphi-Quellcode:
Connection.BeginTrans; // Schreibweise hängt von den Zugriffskomponenten ab
try
  DoWork;
  Connection.CommitTrans;
except
  Connection.RollbackTrans;
end;
Dabei ist es sehr sinnvoll für DoWork tatsächlich eine Prozedure zu verwenden.
Man trennt so die eigentliche Arbeit von der Transaktionssteuerung.
Das heisst also entweder wird in DoWork eine Exception geworfen => dann erfolgt ein Rollback.
Oder es wird keine Exception geworfen => dann erfolgt kein Rollback sondern ein Commit.
Möchte man innerhalb der Procedure abbrechen, dann kann man z.B. einfach Abort aufrufen.
Andreas
  Mit Zitat antworten Zitat