Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

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 tratará como una sola unidad de trabajo. Debe completarse el trabajo en una transacción como un todo; Si se produce un error en cualquier parte de la transacción, se produce un error en toda la transacción. Las transacciones ofrecen al programador la capacidad para aplicar la integridad de los datos. Con varias operaciones bases de datos agrupadas en una sola unidad que deben completarse correctamente o se producirá un error como un todo, la base de datos no puede alcanzar un estado incoherente. Las transacciones son comunes a la mayoría los sistemas de administración de bases 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 con 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á conectada a un servidor de archivos, y éste se detiene antes de que una transacción haya tenido tiempo de confirmar sus cambios, es posible que dicha base de datos adquiera un estado incoherente. Si necesita una compatibilidad real con las transacciones con respecto a la durabilidad, debería utilizar una arquitectura 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 puesto de trabajo de todos los representantes de ventas en la tabla Employees. Después de que el método BeginTrans inicie 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 utilizar el método Rollback para deshacer los cambios que guardan con el método de actualización .

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:
© 2015 Microsoft