Arbeitsbereichsobjekt (DAO)

Office 2013 und höher

Letzte Änderung:Freitag, 16. März 2012

Gilt für:Access 2013 | Access 2016

Ein Arbeitsbereichsobjekt definiert eine benannte Sitzung für einen Benutzer. Es enthält geöffnete Datenbanken und stellt Mechanismen für gleichzeitige Transaktionen und in Microsoft Access Arbeitsbereiche für den sicheren Arbeitsgruppen-Support bereit.

Ein Arbeitsbereich ist ein nicht persistentes Objekt, das definiert, wie die Anwendung mit Daten interagiert, indem es das Microsoft Access-Datenbank verwendet. Verwenden Sie ein Arbeitsbereichsobjekt, um die aktuelle Sitzung zu verwalten oder eine zusätzliche Sitzung zu starten. In einer SItzung können Sie mehrere Datenbanken oder Verbindungen öffnen und Transaktionen verwalten. Sie können beispielsweise folgende Aktionen durchführen:

  • Verwenden Sie die Name-, UserName- und Type-Eigenschaften, um eine benannte Sitzung einzurichten. Die Sitzung erstellt einen Bereich, in dem Sie mehrere Datenbanken öffnen und eine Instanz verschachtelter Transaktionen durchführen.

  • Verwenden Sie die Close-Methode, um eine Sitzung zu beenden.

  • Verwenden Sie die OpenDatabase-Methode, um eine oder mehrere vorhandene Datenbanken eines Arbeitsbereichs zu öffnen.

  • Verwenden Sie die BeginTrans-, CommitTrans- und Rollback-methoden, um das Verarbeiten von verschachtelten Transaktionen innerhalb eines Arbeitsbereichs und mehrere Arbeitsbereichsobjekte zum Durchführen mehrerer gleichzeitiger sich überschneidender Transaktionen zu verwenden.

Wenn Sie zunächst auf ein Arbeitsbereichsobjekt verweisen oder es verwenden, erstellen Sie automatisch den Standardarbeitsbereich, DBEngine.Workspaces(0). Die Einstellungen der Name- und UserName-Eigenschaften des Standardarbeitsbereichs lauten entsprechend "#Default Workspace#" und "Admin". Wenn die Sicherheit aktiviert ist, lautet ist die UserName-Eigenschaftseinstellung der Name des angemeldeten Benutzers.

Bei der Verwendung von Transaktionen sind alle im Arbeitsbereich angegebenen Datenbanken betroffen – sogar wenn mehrere Datenbankobjekte im Arbeitsbereich geöffnet sind. Wenn Sie beispielsweise eine BeginTrans-Methode verwenden, aktualisieren Sie mehrere Datensätze in einer Datenbank und löschen Sie anschließend die Datensätze in einer anderen Datenbank. Wenn Sie anschließend die Rollback-Methode verwenden, werden die Aktualisierungs- und Löschvorgänge abgebrochen und zurückgesetzt. Sie können zusätzliche Arbeitsbereichsobjekte erstellen, um Transaktionen unabhängig zwischen Datenbankobjekten zu verwalten.

Sie können Arbeitsbereichsobjekte mit der CreateWorkspace-Methode erstellen. Nachdem Sie ein neues Arbeitsbereichsobjekt erstellt haben, müssen Sie es an die Arbeitsbereichsauflistung anhängen, wenn Sie aus der Arbeitsbereichsauflistung darauf verweisen müssen.

Sie können ein neu erstelltes Arbeitsbereichsobjekt verwenden, ohne es an die Arbeitsbereichsauflistung anhängen zu müssen. Sie müssen jedoch durch die Objektvariable darauf verweisen, der sie es zugewiesen haben.

Um auf ein Arbeitsbereichsobjekt in einer Auflistung durch die Ordinalzahl oder die Name-Eigenschaftseinstellung zu verweisen, verwenden Sie eine der folgenden Syntaxformen:

DBEngine.Arbeitsbereiche(0)

DBEngine.Arbeitsbereiche("name")

DBEngine.Arbeitsbereiche![name]

Hinweis Hinweis

ODBCDirect-Arbeitsbereiche werden in Microsoft Access 2013 nicht unterstützt. Verwenden Sie ADO, wenn Sie auf externe Datenquellen zugreifen möchten, ohne das Microsoft Access-Datenbankmodul zu verwenden.

In diesem Beispiel wird ein neues Microsoft Access-Arbeitsbereichsobjekt erstellt und an die Arbeitsbereichsauflistung angehängt. Anschließend werden die Arbeitsbereichsauflistungen und die Eigenschaftsauflistung des Arbeitsbereichsobjekts aufgezählt.

Sub WorkspaceX() 
 
   Dim wrkNewAcc As Workspace 
   Dim wrkLoop As Workspace 
   Dim prpLoop As Property 
 
   ' Create a new Microsoft Access workspace. 
   Set wrkNewAcc = CreateWorkspace("NewAccessWorkspace", _ 
      "admin", "", dbUseJet) 
   Workspaces.Append wrkNewAcc 
 
   ' Enumerate the Workspaces collection. 
   For Each wrkLoop In Workspaces 
      With wrkLoop 
         Debug.Print "Properties of " & .Name 
         ' Enumerate the Properties collection of the new 
         ' Workspace object. 
         For Each prpLoop In .Properties 
            On Error Resume Next 
            If prpLoop <> "" Then Debug.Print "  " & _ 
               prpLoop.Name & " = " & prpLoop 
            On Error GoTo 0 
         Next prpLoop 
      End With 
   Next wrkLoop 
 
   wrkNewAcc.Close 
End Sub 
 

In diesem Beispiel wird die CreateWorkspace-Methode verwendet, um einen Microsoft Access-Arbeitsbereich zu erstellen. Anschließend werden die Eigenschaften des Arbeitsbereichs aufgelistet.

Sub CreateWorkspaceX() 
 
   Dim wrkAcc As Workspace 
   Dim wrkLoop As Workspace 
   Dim prpLoop As Property 
 
 
   DefaultType = dbUseJet 
   ' Create an unnamed Workspace object of the type  
   ' specified by the DefaultType property of DBEngine  
   ' (dbUseJet). 
   Set wrkAcc = CreateWorkspace("", "admin", "") 
 
   ' Enumerate Workspaces collection. 
   Debug.Print "Workspace objects in Workspaces collection:" 
   For Each wrkLoop In Workspaces 
      Debug.Print "  " & wrkLoop.Name 
   Next wrkLoop 
 
   With wrkAcc 
      ' Enumerate Properties collection of Microsoft Access  
      ' workspace. 
      Debug.Print _ 
         "Properties of unnamed Microsoft Access workspace" 
      On Error Resume Next 
      For Each prpLoop In .Properties 
         Debug.Print "  " & prpLoop.Name & " = " & prpLoop 
      Next prpLoop 
      On Error GoTo 0 
   End With 
 
   wrkAcc.Close 
 
End Sub 
 

Im folgenden Beispiel wird aufgezeigt, wie eine Transaktion in einem Data Access Objects (DAO)-Arbeitsbereich verwendet werden kann.

Sample code provided by: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: