Objeto Workspace (DAO)
Aplica-se ao: Access 2013, Office 2013
Um objeto Workspace define uma sessão nomeada por um usuário. Ele contém bancos de dados abertos e fornece mecanismos para transações simultâneas e, nos espaços de trabalho do Microsoft Access, suporte a grupos de trabalho seguros.
Comentários
Um Workspace é um objeto não persistente que define como o aplicativo interage com os dados utilizando o mecanismo de banco de dados do Microsoft Access ou o ODBCDirect. Use o objeto Workspace para gerenciar a sessão atual ou para iniciar uma sessão adicional. Em uma sessão, você pode abrir vários bancos de dados ou conexões e gerenciar transações. Por exemplo, você pode:
Usar as propriedades Name, UserName e Type para estabelecer uma sessão chamada. A sessão cria um escopo no qual é possível abrir vários bancos de dados e realizar uma instância de transações aninhadas.
Usar o método Close para encerrar uma sessão.
Usar o método OpenDatabase para abrir um ou mais bancos de dados existentes em um Workspace.
Usar os métodos BeginTrans, CommitTrans e Rollback para gerenciar o processamento de transações aninhadas dentro de um Workspace e usar vários objetos Workspace para realizar diversas operações simultâneas e de sobreposição.
Quando se faz referência ou se usa um objeto Workspace pela primeira vez, cria-se automaticamente o espaço de trabalho padrão, DBEngine.Workspaces(0). As configurações das propriedades Name e UserName do espaço de trabalho padrão são "#Default Workspace#" e "Admin," respectivamente. Se a segurança estiver habilitada, a configuração da propriedade UserName é o nome do usuário conectado.
Quando você utiliza transações, todos os bancos de dados no Workspace especificado são afetados mesmo se vários objetos Database forem abertos no Workspace. Por exemplo, você usa um método BeginTrans, atualiza vários registros em um banco de dados e, em seguida, exclui registros de outro banco de dados. Se você utilizar o método Rollback, as operações de atualização e exclusão serão canceladas e revertidas. Você pode criar objetos Workspace adicionais para gerenciar transações, de forma independente, nos objetos Database.
É possível criar objetos Workspace com o método CreateWorkspace. Depois de criar um novo objeto Workspace, você deve acrescentá-lo à coleção Workspaces se precisar se referir a ela a partir da coleção Workspaces.
Você pode usar um objeto Workspace recém-criado sem acrescentá-lo à coleção Workspaces. Entretanto, você deve se referir a ele pela variável de objeto que foi atribuída a ele.
Para referir-se a um objeto Workspace de uma coleção pelo número ordinal ou pela configuração da propriedade Name, use qualquer uma das formas de sintaxe a seguir:
DBEngine.Workspaces(0)
DBEngine.Workspaces("name")
DBEngine. Workspaces! [nome]
Observação
[!OBSERVAçãO] O Microsoft Access 2013 não oferece suporte para espaços de trabalho ODBCDirect. Use o ADO para acessar fontes de dados externas sem usar o mecanismo de banco de dados do Microsoft Access.
Exemplo
Este exemplo cria um novo objeto Microsoft Access Workspace e o acrescenta à coleção Workspaces. Em seguida, enumeram-se as coleções Workspaces e a coleção Properties de cada objeto 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
Este exemplo usa o método CreateWorkspace para criar um espaço de trabalho Microsoft Access. Em seguida, ele lista as propriedades dos dois tipos de espaço de trabalho.
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
O exemplo a seguir mostra como usar uma transação no espaço de trabalho do Objetos de Acesso de Dados (DAO).
Código de exemplo fornecido por: a Referência do programador do Microsoft Access 2010.
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