Transaktionen verschachteln

06/04/2008 - 13:07 von Andreas Vogt | Report spam
Hallo,
ich starte in einer Prozedur eine Transaktion, rufe innerhalb dieser
eine Prozedur mit Transaktion auf. Wie "merkt" die Transaktion in
erster Ebene dass in der Unterprozedur bei Fehler ein Rollback
stattfand?
Also z.B.:
...
ws.BeginnTrans
rs.edit
rs!Menge = 100
rs.update

call nextProc

if msgbox("speichern?",vbyesno) = vbyes then
ws.CommitTrans
else
ws.Rollback
End if
...

Sub nextProc
On Error goto Fehler
ws.BeginnTrans
rs.edit
rs!Menge = 100
rs.update
ws.CommitTrans

Fehler:
ws.Rollback
End sub

Gruß Andreas
 

Lesen sie die antworten

#1 Thomas Möller
06/04/2008 - 13:19 | Warnen spam
Hallo Andreas,

"Andreas Vogt" schrieb:
ich starte in einer Prozedur eine Transaktion, rufe innerhalb dieser
eine Prozedur mit Transaktion auf. Wie "merkt" die Transaktion in
erster Ebene dass in der Unterprozedur bei Fehler ein Rollback
stattfand?
Also z.B.:
...
ws.BeginnTrans
rs.edit
rs!Menge = 100
rs.update

call nextProc

if msgbox("speichern?",vbyesno) = vbyes then
ws.CommitTrans
else
ws.Rollback
End if
...

Sub nextProc
On Error goto Fehler
ws.BeginnTrans
rs.edit
rs!Menge = 100
rs.update
ws.CommitTrans

Fehler:
ws.Rollback
End sub
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

IMHO sollte es ausreichen, wenn Du aus der Sub (für die innere
Transaktion) eine Function machst. Diese Function liefert dann als
Ergebnis zurück, ob ein CommitTrans oder ein Rollback stattgefunden hat.
Im Falle eines Rollbacks kann die aufrufende Prozedur ebenfalls einen
Rollback veranlassen.
Der Aufruf könnte dann ungefàhr so aussehen:

If NextProc = cRollback Then
ws.Rollback
Exit Sub
End if


HTH
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen