Partager via


Workspace, objet (DAO)

S’applique à : Access 2013, Office 2013

Un objet Workspace définit une session nommée pour un utilisateur. Il contient des bases de données ouvertes et fournit les mécanismes destinés aux transactions simultanées, ainsi que la prise en charge des groupes de travail sécurisés dans les espaces de travail Microsoft Access.

Remarques

Un objet Workspace est un objet non persistant qui détermine le mode d'interaction entre l'application et les données, à savoir à l'aide du moteur de base de données Microsoft Access. Utilisez l'objet Workspace pour gérer la session active ou pour démarrer une session supplémentaire. Dans une session, vous pouvez ouvrir plusieurs bases de données ou connexions et gérer les transactions. Par exemple, vous pouvez :

  • Utiliser les propriétés Name, UserName et Type pour établir une session nommée. La session crée une étendue dans laquelle vous pouvez ouvrir plusieurs bases de données et exécuter une instance de transactions imbriquées.

  • Utiliser la méthode Close pour fermer une session.

  • Utilisez le OpenDatabase méthode pour ouvrir une ou plusieurs bases de données existantes sur un espace de travail.

  • Utiliser le BeginTrans, CommitTrans, et restauration méthodes permettent de gérer des transactions imbriquées processing au sein d’un espace de travail et utiliser plusieurs espace de travail objets pour effectuer les transactions multiples, simultanées et qui se chevauchent.

Lorsque vous utilisez ou référencez un objet Workspace pour la première fois, vous créez automatiquement l’espace de travail par défaut DBEngine.Workspaces(0). Les paramètres des propriétés Name et UserName de l'espace par défaut sont respectivement « #Default Workspace# » et « Admin ». Si la sécurité est activée, le paramètre de propriété UserName correspond au nom de l'utilisateur connecté.

Lorsque vous utilisez des transactions, toutes les bases de données de l'objet Workspace spécifié sont concernés, même si plusieurs objets Database sont ouverts dans l'objet Workspace. Par exemple, vous utilisez une méthode BeginTrans, mettez à jour plusieurs enregistrements d'une base de données, puis supprimez des enregistrements d'une autre base de données. Si vous utilisez à présent la méthode Rollback, les opérations de mise à jour et de suppression sont annulées et restaurées. Vous pouvez créer d'autres objets Workspace afin de gérer les transactions de manière indépendante dans les objets Database.

You can create Workspace objects with the CreateWorkspace method. After you create a new Workspace object, you must append it to the Workspaces collection if you need to refer to it from the Workspaces collection.

Vous pouvez utiliser un nouvel objet Workspace sans l'ajouter à la collection Workspaces. Toutefois, dans ce cas, vous devez y faire référence en fonction de la variable d'objet à laquelle il est attribué.

Pour faire référence à un objet TableDef dans une collection par son nombre ordinal ou par son paramètre de propriété Name, utilisez l’une des formes de syntaxe suivantes :

DBEngine.Workspaces(0)

DBEngine.Workspaces("name")

DBEngine. Espaces de travail ! [name]

Remarque

[!REMARQUE] Les espaces de travail ODBCDirect ne sont pas pris en charge dans Microsoft Access 2013. Utilisez ADO si vous voulez accéder aux sources de données externes sans avoir recours au moteur de base de données Microsoft Access.

Exemple

Cet exemple crée un nouvel objet Microsoft Access et l'ajoute aux collections Workspaces. Il énumère ensuite les collections Workspaces et la collection Properties de chaque objet Workspace.

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 

Cet exemple utilise la CreateWorkspace méthode pour créer un espace de travail Microsoft Access. Il répertorie les propriétés de l’espace d’ensuite.

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 

L’exemple suivant montre comment utiliser une transaction dans un espace de travail Data Access Objects (DAO).

Exemple de code fourni parMicrosoft 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