General

6.20 Cosa sono e come funzionano le transazioni?
  Davide La Mantia (Sib)
Una possibilità interessante, anche se solitamente poco sfruttata, di Access è quella di usare le transazioni.
Le transazioni non sono altro che metodi che consentono di operare da codice su recordset e query di aggiornamento, accodamento ed eliminazione, conservando la possibilità, se qualcosa non va, di fare marcia indietro. L'uso può apparire complesso, e in effetti a certi livelli lo è, ma per operazioni semplici non presenta particolari difficoltà.
Le transazioni sono metodi del DBEngine e dei Workspaces.
Per avviare una transazione da codice si usa la normale sintassi dei metodi degli oggetti, ad es, per il workspace corrente (il WorkSpace numero 0) si scrive:
DBEngine.Workspace(0).BeginTrans
Se il codice che abbiamo scritto stabilisce che tutto va bene renderemo definitive le modifiche col metodo:
DBEngine.WorkSpace(0).CommitTrans
Se il codice stabilisce che qualcosa è andato storto, annulleremo tutte le modifiche che abbiamo fatto tramite RecordSet e Query col metodo:
DBEngine.WorkSpace(0).RollBack
Tutto questo non è che la punta dell'iceberg, ma già con queste tre istruzioni possiamo rendere più sicure, per il nostro db, tutte le operazioni di importazione e modifica che realizziamo tramite codice.
A puro titolo di esempio riporto una breve funzione che usa le transazioni:
Public Function AggTab()
   With DBEngine.Workspaces(0)
      .BeginTrans
       CurrentDb.Execute "INSERT INTO Decod2 ( IDDati, ValDato, Cod ) SELECT Decod.IDDati, Decod.ValDato, Decod.Cod FROM Decod;"
      If MsgBox("OK?", vbYesNo) = vbYes Then
         .CommitTrans
      Else
         .Rollback
      End If
   End With
End Function
Questa funzione accoda alla tabella Decod2 i dati della tabella Decod. dopodicchè la funzione ci chiede se vogliamo confermare o annullare le modifiche apportate.


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.