Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Workspace.CommitTrans Method (DAO)

Office 2013 und höher

Letzte Änderung:Montag, 9. März 2015

Gilt für:Access 2013 | Access 2016

Beendet die aktuelle Transaktion und speichert die Änderungen.

Ausdruck.CommitTrans(Options)

Ausdruck Eine Variable, die ein Workspace-Objekt darstellt.

Parameter

Name

Erforderlich/Optional

Datentyp

Beschreibung

Option

Optional

Long

In einem Microsoft Access-Arbeitsbereich können Sie die Konstante DbForceOSFlush mit CommitTranseinschließen. Dies zwingt das Datenbankmodul, alle Aktualisierungen sofort auf dem Datenträger, statt sie temporär zu leeren. Ohne Verwendung dieser Option wird ein Benutzer konnte Kontrolle unmittelbar nach die Anwendung CommitTrans, ruft schalten Sie den Computer off, und dass die Daten nicht auf den Datenträger geschrieben. Während der Verwendung dieser Option die Leistung der Anwendung auswirken kann, ist hilfreich für Situationen, in denen der Computer heruntergefahren werden könnte vor dem Speichern von zwischengespeicherter Aktualisierungen, auf dem Datenträger.

Die Transaktionsmethoden BeginTrans, CommitTransund Rollback verwalten Transaktionsverarbeitung während einer Sitzungs durch ein Workspace -Objekt definiert. Sie verwenden diese Methoden mit einem Workspace -Objekt, wenn Sie eine Reihe von Änderungen an den Datenbanken in einer Sitzung als eine Einheit behandelt werden sollen.

In der Regel verwenden Sie die Integrität Ihrer Daten, wenn Sie beide Datensätze in mindestens zwei Tabellen aktualisieren müssen Transaktionen und stellen Sie sicher, dass die Änderungen abgeschlossen werden (Commit) in allen Tabellen oder keine an (Rollback). Wenn Sie Geld von einem Konto an eine andere übertragen, können Sie beispielsweise subtrahieren einer und addieren Sie die in eine andere. Wenn eine der Aktualisierungen fehlschlägt, stimmen die Konten nicht mehr. Verwenden Sie die BeginTrans -Methode vor dem Aktualisieren des ersten Datensatzes, und klicken Sie dann, wenn alle nachfolgende Aktualisierung ein Fehler auftritt, können die Rollback -Methode alle Aktualisierungen rückgängig machen. Verwenden Sie die CommitTrans -Methode, nachdem Sie den letzten Datensatz erfolgreich aktualisiert.

Hinweis Hinweis

In einem Workspace -Objekt Transaktionen sind immer in den Arbeitsbereich global und nicht beschränkt auf nur einem Connection- oder Database -Objekt. Wenn Sie Operationen für mehrere Verbindungen oder Datenbanken innerhalb einer Transaktion Workspace durchführen, wirkt sich das Auflösen der Transaktion (die CommitTrans- oder Rollback -Methode verwendet) alle Vorgänge für alle Verbindungen und Datenbanken innerhalb dieses Arbeitsbereichs.

Nachdem Sie CommitTransverwenden, können nicht Sie Änderungen rückgängig gemacht werden während der Transaktion, wenn die Transaktion in einer anderen Transaktion geschachtelt ist, die selbst ein Rollback ist. Wenn Sie Transaktionen schachteln, müssen Sie die aktuelle Transaktion beheben, bevor Sie eine Transaktion auf einer höheren Schachtelungsebene auflösen können.

Wenn Sie gleichzeitige Transaktionen mit überlappenden, nicht geschachtelten Bereichen wünschen möchten, 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, tritt ein Fehler auf.

Einige ISAM-Datenbanken, die in einem Microsoft Access-Arbeitsbereich verwendet unterstützen keine Transaktionen, in diesem Fall wird die Transactions -Eigenschaft des Database -Objekt oder Recordset -Objekts False. Stellen Sie sicher, dass die Datenbank Transaktionen unterstützt, überprüfen Sie den Wert der Transaktionen -Eigenschaft des Database -Objekts vor der Nutzung der BeginTrans -Methode. Wenn Sie ein Recordset -Objekt basierend auf mehrere Datenbanken verwenden, überprüfen Sie die Transactions -Eigenschaft des Recordset -Objekts. Wenn ein Recordset vollständig auf Tabellen Microsoft Access-Datenbankmoduls basiert, können Sie immer Transaktionen verwenden. Recordset -Objekte basierend auf Tabellen, jedoch von anderen Datenbankprodukten erstellt, unterstützen keine Transaktionen. Sie können nicht beispielsweise Transaktionen in einem Recordset-Objekt basierend auf einer Paradox-Tabelle verwenden. In diesem Fall wird die Transactions -Eigenschaft False. Wenn die Datenbank oder Recordset Transaktionen nicht unterstützt, die Methoden werden ignoriert, und tritt kein Fehler auf.

Wenn Sie über das Microsoft Access-Datenbankmodul auf ODBC-Datenquellen zugreifen, können Sie Transaktionen nicht schachteln.

In ODBC-Arbeitsbereichen Wenn Sie CommitTrans verwenden der Cursor möglicherweise nicht mehr gültig. Verwenden Sie die Requery -Methode zeigen Sie die Änderungen im Recordset-Objektoder schließen und erneut öffnen des Recordset-Objekts.

Hinweis Hinweis
  • 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 gespeichert, in dem durch die TEMP-Umgebungsvariable auf der Arbeitsstation angegebenen Verzeichnis protokolliert. Wenn die Transaktionsprotokolldatei den verfügbaren Speicherplatz auf dem Laufwerk TEMP verbraucht, löst das Datenbankmodul einen Laufzeitfehler. Zu diesem Zeitpunkt Wenn Sie CommitTransverwenden, eine unbestimmte Anzahl von Operationen engagieren, aber die verbleibenden nicht abgeschlossener Vorgänge verloren, und des Vorgangs muss neu gestartet werden. Bei Verwendung einer Rollback -Methode gibt das Transaktionsprotokoll und ein Rollback für alle Vorgänge in der Transaktion.

  • Schließen eines Klons Recordset-Objekt in einer ausstehenden Transaktion, wird eine implizite Rollback -Operation verursacht.

Im folgenden Beispiel wird veranschaulicht, wie eine Transaktion in einem Arbeitsbereich Data Access Objects (DAO) verwenden.

Der Beispielcode stammt von: Microsoft Access 2010 Programmer’s Reference | Informationen zu den Mitwirkenden

Public Sub TransferFunds()
    Dim wrk As DAO.Workspace
    Dim dbC As DAO.Database
    Dim dbX As DAO.Database
    
    Set wrk = DBEngine(0)
    Set dbC = CurrentDb
    Set dbX = wrk.OpenDatabase("e:\books\acc2007vba\myDB.accdb")
    
    On Error GoTo trans_Err
    
    'Begin the transaction
    
    wrk.BeginTrans
    
    'Withdraw funds from one account table
    dbC.Execute "INSERT INTO tblAccounts ( Amount, Txn, TxnDate ) SELECT -20, 'DEBIT', Date()", dbFailOnError

    'Deposit funds into another account table
    dbX.Execute "INSERT INTO tblAccounts ( Amount, Txn, TxnDate ) SELECT 20, 'CREDIT', Date()", dbFailOnError
    
    'Commit the transaction
    wrk.CommitTrans dbForceOSFlush
    
trans_Exit:
    'Clean up
    wrk.Close
    Set dbC = Nothing
    Set dbX = Nothing
    Set wrk = Nothing
    Exit Sub
    
trans_Err:
    'Roll back the transaction
    wrk.Rollback
    Resume trans_Exit
    
End Sub

Wrox Press wird getragen von der Philosophie "von Programmierern für Programmierer". Wrox-Bücher wurden von Programmierern für Programmierer verfasst, und die Marke Wrox steht für intelligente Lösungen für praktische Programmierprobleme.

Anzeigen: