Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Aktionsabfragen: Transaktionen durchfhren, Teil 1

Viele Aktionsabfragen bauen derart aufeinander auf, dass eine Abfrage nicht durchgefhrt werden soll, wenn die andere nicht erfolgreich war. Mit Access knnen Sie solche Abfragen zu Transaktionen zusammenfassen, die nur als Ganzes oder gar nicht durchgefhrt werden.

Transaktionen mit Access

Fr die Durchfhrung einer Transaktion mssen Sie zunchst ein Workspace-Objekt fr die aktuelle Sitzung deklarieren und erstellen.

Anschlieend verwenden Sie die drei Methoden BeginTrans, CommitTrans und Rollback zur Durchfhrung einer Transaktion. Ein einfaches Beispiel ist das Kopieren eines Datensatzes in eine andere Tabelle, zum Beispiel zum Sichern nicht mehr bentigter Daten, und das anschlieende Lschen des Datensatzes aus der Herkunftstabelle. Wenn beim Kopieren des Datensatzes ein Fehler passiert und der Datensatz trotzdem gelscht wird, ist er verloren. Daher verwenden Sie eine Transaktion wie in dem folgenden Beispiel:

Legen Sie fr Testzwecke in der Nordwinddatenbank eine Kopie der Tabelle Bestellungen namens BestellungenSicherung an. Verwenden Sie beim Erstellen die Option Nur Struktur.

Nachfolgende Prozedur kopiert den im Parameter angegebenen Datensatz zunchst in die Tabelle BestellungenSicherung und lscht ihn dann aus der Tabelle Bestellungen. Wenn bei einer der beiden Aktionen ein Fehler passiert, werden beide rckgngig gemacht (Rollback), anderenfalls werden beide Aktionen durchgefhrt (CommitTrans).

Public Function BestellungSichern(Bestellnummer As Integer)

    Dim wrk As Workspace

    Dim db As Database

    On Error Resume Next

    Set wrk = DBEngine(0)

    Set db = CurrentDb

    wrk.BeginTrans

    db.Execute "INSERT INTO BestellungenSicherung([Kunden-Code], [Personal-Nr], Bestelldatum, Lieferdatum, Versanddatum, Versandber, Frachtkosten, Empfnger, Strae, Ort, Region, PLZ, Bestimmungsland) SELECT [Kunden-Code], [Personal-Nr], Bestelldatum, Lieferdatum, Versanddatum, Versandber, Frachtkosten, Empfnger, Strae, Ort, Region, PLZ, Bestimmungsland FROM Bestellungen WHERE [Bestell-Nr] = " & Bestellnummer, dbFailOnError

    db.Execute "DELETE FROM Bestellungen WHERE [Bestell-Nr] = " & Bestellnummer, dbFailOnError

    If Err.Number = 0 Then

        wrk.CommitTrans

    Else

        wrk.Rollback

    End If

End Function

© 2003-2015 André Minhorst Alle Rechte vorbehalten.