Scopo
Effetta il rollback di una transazione chiusa cioè annulla tutte le modifiche al progetto eseguite durante la transazione. Eventuali lock di Team Works ottenuti durante l'esecuzione della transazione verranno rilasciati.
Sintassi
INDEExtension INDE = null // Oggetto INDE
//
INDE.RollbackTransaction(id transazione)
//
INDE.RollbackTransaction(id transazione)
Argomenti
| ID Transazione | Puntatore alla transazione da annullare |
Note
- Per annullare una transazione aperta è necessario chiamare AbortTransaction.
- Il numero di transazioni chiuse che IN.DE mantiene in memoria dipende dal relativo parametro presente nella videata delle proprietà del progetto. Il valore di default è 32.
Esempio di codice
// ******************************************
// Rinomina le tabelle e i campi dei database
// ******************************************
public void Parole.Rinomina()
{
INDEExtension INDE = null // Oggetto INDE
INDETreeWalker twDB = new() // TreeWalker per scorrere i database
int DocID = 0 // Identificativo del documento
//
// Svuoto la tabella IMDB
delete from Parole
//
// Carico in memoria le parole
insert into Parole select
set Parola := Parola
set Acronimo := Acronimo
from
Parole // Tabella Master
//
// Mi connetto ad INDE
INDE.Connect()
//
// Recupero l'identificativo del documento attivo
DocID := INDE.GetActiveDocument()
if DocID > ZERO
{
int PrjID = 0 // Identificativo del progetto
int TrID = 0 // Identificativo della transazione
//
// Recupero l'identificativo del progetto
PrjID := INDE.GetRootObject(DocID)
//
// Apro una tranzasione
TrID := INDE.BeginTransaction(DocID)
//
try
{
// Inizializzo il TreeWalker per scorrere i database del progetto
twDB.SetRoot(PrjID, Database, ??, ??, ??)
while True = True
...
//
// Rendo permanenti le modifiche
INDE.CommitTransaction(TrID)
//
// Valido il documento
INDE.Validate(INDE.GetActiveDocument())
}
catch // Si è verificato un errore
{
// Annullo le modifiche
INDE.AddTransactionMessage(TrID, PrjID, Errore, MSG Impossibile 2)
INDE.RollbackTransaction(TrID)
}
}
}
// Rinomina le tabelle e i campi dei database
// ******************************************
public void Parole.Rinomina()
{
INDEExtension INDE = null // Oggetto INDE
INDETreeWalker twDB = new() // TreeWalker per scorrere i database
int DocID = 0 // Identificativo del documento
//
// Svuoto la tabella IMDB
delete from Parole
//
// Carico in memoria le parole
insert into Parole select
set Parola := Parola
set Acronimo := Acronimo
from
Parole // Tabella Master
//
// Mi connetto ad INDE
INDE.Connect()
//
// Recupero l'identificativo del documento attivo
DocID := INDE.GetActiveDocument()
if DocID > ZERO
{
int PrjID = 0 // Identificativo del progetto
int TrID = 0 // Identificativo della transazione
//
// Recupero l'identificativo del progetto
PrjID := INDE.GetRootObject(DocID)
//
// Apro una tranzasione
TrID := INDE.BeginTransaction(DocID)
//
try
{
// Inizializzo il TreeWalker per scorrere i database del progetto
twDB.SetRoot(PrjID, Database, ??, ??, ??)
while True = True
...
//
// Rendo permanenti le modifiche
INDE.CommitTransaction(TrID)
//
// Valido il documento
INDE.Validate(INDE.GetActiveDocument())
}
catch // Si è verificato un errore
{
// Annullo le modifiche
INDE.AddTransactionMessage(TrID, PrjID, Errore, MSG Impossibile 2)
INDE.RollbackTransaction(TrID)
}
}
}
Il codice riportato sopra lo si può vedere nella procedura Rinomina all'interno del progetto Glossario allegato. Nell'esempio questa funzione viene usata per annullare le modifiche di rinominazione degli oggetti poichè non hanno avuto tutte successo.
Ultima modifica: 24/03/2021 / Validità: da 7.1.3300
procedura