Betrifft: ab orgAnice SQL
Frage:
Transaktionen mit Database.Access
Lösung:
Es wird ausdrücklich empfohlen, für Transaktionen die neue Klasse Database.Access zu verwenden. Die aus Kompatibilitätsgründen zu orgAnice 3 verbleibenden Methoden Database.BeginTransaction, Database.Commit und Database.Rollback sollten nicht mehr verwendet werden!
Die Verwendung von Database.Access hat den Vorteil, dass nicht explizit ordnungsgemäß abgeschlossene Transaktionen (z. B. durch unbehandelte Fehler, oder fehlende .Rollback bzw. .Commit in der Fehlerbehandlung) automatisch zurückgefahren werden (es wird intern ein Rollback ausgeführt)
Beispiele:
1 2 3 4 5 6 |
With Database.Access ... .BeginRead und/oder .BeginTransaction ... .Commit End With ‘ hier wird automatisch EndRead und/oder Rollback aufgerufen |
oder:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Test() Dim pAccess As Access Set pAccess = Database.Access ... pAccess.BeginRead und/oder pAccess.BeginTransaction ... 'evtl. pAccess.Commit End Sub ‘ hier wird automatisch EndRead und/oder Rollback aufgerufen |
In beiden Fällen wird auch bei unerwartetem Verlassen der Prozedur (z.B. Fehler, Exit Sub, …) EndRead und/oder Rollback aufgerufen.
Achtung! Der Code:
1 2 3 4 5 |
Database.Access.BeginTransaction ... Database.Access.Rollback |
funktioniert nicht!
Was this helpful?
1 / 0