OKB-000267 | Transaktionen mit Database.Access

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:

With Database.Access

.BeginRead und/oder .BeginTransaction

.Commit

End With ‘ hier wird automatisch EndRead und/oder Rollback aufgerufen

oder:

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:

Database.Access.BeginTransaction

Database.Access.Rollback

funktioniert nicht!