Workspace.Rollback-Methode (DAO)
Gilt für: Access 2013, Office 2013
Beendet die aktuelle Transaktion und setzt die Datenbanken im Workspace-Objekt in den Zustand zurück, in dem sie sich befanden, als die aktuelle Transaktion gestartet wurde.
Syntax
Ausdruck . Rollback
Ausdruck Eine Variable, die ein Workspace-Objekt darstellt.
Hinweise
Mithilfe der Transaktionsmethoden BeginTrans, CommitTrans und Rollback wird die Transaktionsverarbeitung während einer Sitzung verwaltet, die durch ein Workspace-Objekt definiert wurde. Sie verwenden diese Methoden mit einem Workspace-Objekt, wenn Sie eine Reihe von an den Datenbanken vorgenommenen Änderungen in einer Sitzung als eine Einheit verarbeiten möchten.
In der Regel verwenden Sie Transaktionen, um die Integrität Ihrer Daten aufrechtzuerhalten, wenn Sie sowohl Datensätze in zwei oder mehr Tabellen aktualisieren und sicherstellen müssen, dass Änderungen in allen Tabellen oder gar keiner Tabelle abgeschlossen (committet) wurden (Rollback). Wenn Sie beispielsweise Geld von einem Konto auf ein anderes überweisen, können Sie einen Betrag von einem Konto subtrahieren und den Betrag zu einem anderen hinzufügen. Wenn eine der Aktualisierungen fehlschlägt, sind die Konten nicht mehr ausgeglichen. Verwenden Sie die BeginTrans-Methode , bevor Sie den ersten Datensatz aktualisieren. Wenn bei einem nachfolgenden Update ein Fehler auftritt, können Sie die Rollback-Methode verwenden, um alle Updates rückgängig zu machen. Verwenden Sie die CommitTrans-Methode , nachdem Sie den letzten Datensatz erfolgreich aktualisiert haben.
Hinweis
Innerhalb eines Workspace-Objekts sind Transaktionen für Workspace immer global und nicht auf ein Connection- oder Database-Objekt beschränkt. Wenn Sie Operationen für mehrere Verbindungen oder Datenbanken innerhalb einer Workspace-Transaktion durchführen, wirkt sich das Auflösen der Transaktion (d. h. die Verwendung der CommitTrans- oder Rollback-Methode) auf alle Operationen für sämtliche Verbindungen und Datenbanken innerhalb dieses Arbeitsbereichs aus.
Nach Verwendung von CommitTrans können Sie an dieser Transaktion vorgenommene Änderungen nur dann rückgängig machen, wenn die Transaktion in einer anderen Transaktion geschachtelt ist, für die ein Rollback ausgeführt wurde. Wenn Sie Transaktionen schachteln, müssen Sie die aktuelle Transaktion auflösen, bevor Sie eine Transaktion auf einer höheren Schachtelungsebene auflösen können.
Wenn Sie gleichzeitige Transaktionen mit überlappenden, nicht geschachtelten Bereichen wünschen, können Sie zusätzliche Workspace-Objekte für die gleichzeitigen Transaktionen erstellen.
Wenn Sie ein Workspace-Objekt schließen, ohne ausstehende Transaktionen aufzulösen, wird automatisch ein Rollback für die Transaktionen ausgeführt.
Wenn Sie die CommitTrans- oder Rollback-Methode verwenden, ohne vorher die BeginTrans-Methode verwendet zu haben, tritt ein Fehler auf.
Einige ISAM-Datenbanken, die in einem Microsoft Access-Arbeitsbereich verwendet werden, unterstützen möglicherweise keine Transaktionen. In diesem Fall ist die Transactions-Eigenschaft des Database-Objekts oder recordset-Objekts False. Um sicherzustellen, dass die Datenbank Transaktionen unterstützt, überprüfen Sie den Wert der Transactions-Eigenschaft des Database-Objekts , bevor Sie die BeginTrans-Methode verwenden. Wenn Sie ein Recordset-Objekt verwenden, das auf mehr als einer Datenbank basiert, überprüfen Sie die Transactions-Eigenschaft des Recordset-Objekts . Wenn ein Recordset vollständig auf Tabellen der Microsoft Access-Datenbank-Engine basiert, können Sie immer Transaktionen verwenden. Recordset-Objekte , die auf Tabellen basieren, die von anderen Datenbankprodukten erstellt wurden, unterstützen jedoch möglicherweise keine Transaktionen. Sie können beispielsweise keine Transaktionen in einem Recordset verwenden, das auf einer Paradox-Tabelle basiert. In diesem Fall ist die Transactions-EigenschaftFalse. Wenn die Datenbank oder das Recordset keine Transaktionen unterstützt, werden die Methoden ignoriert, und es tritt kein Fehler auf.
Wenn Sie über das Microsoft Access-Datenbankmodul auf ODBC-Datenquellen zugreifen, können Sie Transaktionen nicht schachteln.
Wenn Sie in ODBC-Arbeitsbereichen CommitTrans verwenden, ist der Cursor möglicherweise nicht mehr gültig. Zeigen Sie die Änderungen im Recordset-Objekt mithilfe der Requery-Methode an, oder schließen Sie das Recordset-Objekt, und öffnen Sie es erneut.
Die Leistung der Anwendung lässt sich oftmals dadurch verbessern, dass Operationen unterbrochen werden, die Datenträgerzugriff auf Transaktionsblöcke erfordern. So werden die Operationen zwischengespeichert, und die Zugriffe auf den Datenträger können deutlich verringert werden.
In einem Microsoft Access-Arbeitsbereich werden Transaktionen in einer Datei protokolliert, die in dem Verzeichnis gespeichert wird, das von der TEMP-Umgebungsvariable auf der Arbeitsstation angegeben wird. Wenn die Transaktionsprotokolldatei den verfügbaren Speicher auf Dem TEMP-Laufwerk erschöpft, löst die Datenbank-Engine einen Laufzeitfehler aus. An diesem Punkt wird bei Verwendung von CommitTrans eine unbestimmte Anzahl von Vorgängen committet, aber die verbleibenden nicht abgeschlossenen Vorgänge gehen verloren, und der Vorgang muss neu gestartet werden. Die Verwendung einer Rollback-Methode gibt das Transaktionsprotokoll frei und führt ein Rollback für alle Vorgänge in der Transaktion aus.
Wenn Sie den Klon eines Recordset-Objekts in einer ausstehenden Transaktion schließen, wird eine implizite Rollback-Operation verursacht.