Объект Workspace (DAO)
Область применения: Access 2013, Office 2013
Объект Workspace определяет именованный сеанс для пользователя. Он содержит открытые базы данных и предоставляет механизмы для одновременных транзакций и (в рабочих областях Microsoft Access) поддержку защищенной рабочей группы.
Примечания
Объект Workspace — это непостоянный объект, определяющий, как приложение взаимодействует с данными с помощью ядра СУБД Microsoft Access. Объект Workspace используется для управления текущим сеансом или начала дополнительного сеанса. В сеансе можно открыть несколько баз данных или подключений и управлять транзакциями. Например, вы можете:
Использовать свойства Name, UserName и Type, чтобы создать именованный сеанс. Сеанс создает область, в которой можно открыть несколько баз данных и провести один экземпляр вложенных транзакций.
Использовать метод Close, чтобы завершить сеанс.
Использовать метод OpenDatabase метод, чтобы открыть одну или несколько существующих баз данных в объекте Workspace.
Использовать методы BeginTrans, CommitTrans и Rollback, чтобы управлять обработкой вложенных транзакций в объекте Workspace и использовать несколько объектов Workspace для выполнения нескольких, одновременных и накладывающихся транзакций.
При первом указании или использовании объекта Workspace автоматически создается рабочая область по умолчанию DBEngine.Workspaces(0). Параметры свойств Name и UserName рабочей области по умолчанию: "#Default Workspace#" и "Администратор" соответственно. Если включена система безопасности, значение свойства UserName соответствует имени пользователя, вошедшего в систему.
При использовании транзакции затрагиваются все базы данных в указанном объекте Workspace, даже если открыто несколько объектов Database в объекте Workspace. Предположим, вы используете метод BeginTrans, обновляете несколько записей в базе данных, а затем удаляете записи из другой базы данных. Если вы затем используете метод Rollback, как операция обновления, так и операция удаления отменяются с откатом результатов. Вы можете создать дополнительные объекты Workspace, чтобы независимо управлять транзакциями в объектах Database.
Объекты Workspace можно создать с помощью метода CreateWorkspace. После создания объекта Workspace его необходимо добавить в коллекцию Workspaces, если нужно ссылаться на него из коллекции Workspaces.
Вы можете использовать только что созданный объект Workspace без его добавления в коллекцию Workspaces. Однако на него нужно ссылаться по объектной переменной, для которой он назначен.
Чтобы сослаться на объект Workspace в коллекции по его порядковому номеру или по его свойству Name, используйте любую из указанных ниже синтаксических форм.
DBEngine.Workspaces(0)
DBEngine.Workspaces("name")
DBEngine. Рабочие области! [имя]
Примечание.
Рабочие области ODBCDirect не поддерживаются в Microsoft Access 2013. Используйте ADO, если вы хотите получить доступ к внешним источникам данных без использования ядра СУБД Microsoft Access.
Пример
В этом примере создается новый объект Microsoft Access Workspace, который добавляется в коллекцию Workspaces. Затем выполняется перечисление коллекции Workspaces и коллекции Properties объекта 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
В этом примере используется метод CreateWorkspace для создания рабочей области Microsoft Access. Затем перечисляются свойства рабочей области.
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
В следующем примере показано, как использовать транзакцию в рабочей области объектов доступа к данным (DAO).
Пример кода изсправочника программиста 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