Expandir Minimizar

Cómo: Usar transacciones en un conjunto de registros de DAO

Office 2013

Última modificación: miércoles, 29 de junio de 2011

Hace referencia a: Access 2013 | Office 2013

Una transacción es un conjunto de operaciones agrupadas y se administra como una sola unidad de trabajo.El trabajo en una transacción debe realizarse en un conjunto; Si se produce un error en cualquier parte de la transacción, toda la transacción genera un error.Las transacciones ofrecen el programador la posibilidad de aplicar la integridad de los datos.Con varias bases de datos operaciones agrupadas en una sola unidad que deben tener éxito o se producirá un error en un conjunto, la base de datos no puede llegar a un estado incoherente.Las transacciones son comunes a la mayoría de sistemas de administración de base de datos.

El ejemplo más habitual de procesamiento de transacciones lo representa el cajero de automático de un banco (ATM).Los procesos de expedición de dinero en efectivo y posterior carga del importe en la cuenta del usuario se consideran una unidad lógica de trabajo y están agrupados en una transacción: El dinero no se expide a menos que el sistema pueda cargarlo en la cuenta.Mediante el uso de una transacción, toda la operación o se realiza correctamente o genera un error.Esto mantiene en un estado coherente la base de datos del cajero automático.

Considere la posibilidad de utilizar transacciones si desea asegurarse de que cada una de las operaciones de un grupo de operaciones se realiza correctamente antes de confirmarlas todas.Tenga en cuenta que cada una de las transacciones resulta invisible para el resto.Es decir, ninguna transacción puede ver las actualizaciones realizadas por otra en la base de datos hasta que ésta se confirma.

Nota Nota

El comportamiento de las transacciones de bases de datos de Access difiere del comportamiento de los orígenes de datos ODBC, como Microsoft SQL Server.Por ejemplo, si una base de datos está conectado a un servidor de archivos y se detiene el servidor de archivos antes de una transacción ha tenido tiempo para confirmar los cambios, a continuación, la base de datos podría dejarse en un estado incoherente.Si requiere compatibilidad con la transacción true con respecto a la duración, debe investigar el uso de una arquitectura de cliente/servidor.

El motor de base de datos de Microsoft Access admite transacciones a través de los métodos de DAO BeginTrans , CommitTrans y Rollback del objeto Workspace .

En el ejemplo de código siguiente se cambia el título del trabajo de todos los representantes de ventas en la tabla Employees.Después de que el método BeginTrans , inicia una transacción que aísla todos los cambios realizados en la tabla empleados, el método CommitTrans guarda los cambios.Tenga en cuenta que puede usar el método Rollback para deshacer los cambios que guardan con el método Update .

Sub ChangeTitle() 
 
Dim wrkCurrent As DAO.Workspace 
Dim dbsNorthwind As DAO.Database 
Dim rstEmployee As DAO.Recordset 
 
On Error GoTo ErrorHandler 
 
   Set wrkCurrent = DBEngine.Workspaces(0) 
   Set dbsNorthwind = CurrentDB 
   Set rstEmployee = dbsNorthwind.OpenRecordset("Employees") 
 
   wrkCurrent.BeginTrans 
   Do Until rstEmployee.EOF 
      If rstEmployee!Title = "Sales Representative" Then 
         rstEmployee.Edit 
         rstEmloyee!Title = "Sales Associate" 
         rstEmployee.Update 
      End If 
      rstEmployee.MoveNext 
   Loop 
 
   If MsgBox("Save all changes?", vbQuestion + vbYesNo) = vbYes Then 
      wrkCurrent.CommitTrans 
   Else 
      wrkCurrent.Rollback 
   End If 
 
   rstEmployee.Close 
   dbsNorthwind.Close 
   wrkCurrent.Close 
 
   Set rstEmployee = nothing 
   Set dbsNorthwind = Nothing 
   Set wrkCurrent = Nothing 
 
   Exit Sub 
 
ErrorHandler: 
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description 
End Sub 

Cuando se utilizan transacciones, todas las bases de datos y los objetos Recordset del objeto Workspace se ven afectados; las transacciones son globales para el área de trabajo, no afectan únicamente a una base de datos o a un objeto Recordset específico.Si realiza operaciones en varias bases de datos o dentro de una transacción del área de trabajo, los métodos Commit y Rollback afectarán a todos los objetos modificados dentro de dicha área de trabajo durante la transacción.

También puede utilizar los métodos BeginTrans , CommitTrans y Rollback con el objeto DBEngine .En este caso, la transacción se aplica al área de trabajo predeterminada, que es DBEngine.Workspaces(0).

Mostrar:
© 2014 Microsoft