Freigeben über


Arbeitsbereichsobjekt (DAO)

Gilt für: Access 2013, Office 2013

Ein Arbeitsbereichs objekt 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.

Hinweise

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 Arbeitsbereichs objekt, 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). The settings of the Name and UserName properties of the default workspace are "#Default Workspace#" and "Admin," respectively. 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 Datenbank objekte 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 Arbeitsbereichs objekte erstellen, um Transaktionen unabhängig zwischen Datenbank objekten zu verwalten.

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

Sie können ein neu erstelltes Arbeitsbereichs objekt verwenden, ohne es an die Arbeitsbereichs auflistung 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.

Beispiel

In diesem Beispiel werden ein neues Microsoft Access Workspace-Objekt erstellt und dann an die Workspaces-Auflistung angefügt. Anschließend werden die Arbeitsbereichs auflistungen und die Eigenschafts auflistung des Arbeitsbereichs objekts 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.

Der Beispielcode stammt von:Microsoft Access 2010 Programmer's Reference.

    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