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).BeginTransSe il codice che abbiamo scritto stabilisce che tutto va bene renderemo definitive le modifiche col metodo: DBEngine.WorkSpace(0).CommitTransSe il codice stabilisce che qualcosa è andato storto, annulleremo tutte le modifiche che abbiamo fatto tramite RecordSet e Query col metodo: DBEngine.WorkSpace(0).RollBackTutto 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 FunctionQuesta funzione accoda alla tabella Decod2 i dati della tabella Decod. dopodicchè la funzione ci chiede se vogliamo confermare o annullare le modifiche apportate. |