English
Instant Developer Foundation Documentazione
  • Estensibilità
  • Libreria
  • INDE Extension
  • Transazioni

Rollback Transaction

procedura copia link

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)

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)
    }
  }
}

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

Vedi Anche

  • Commit Transaction (procedura)
  • Abort Transaction (procedura)
  • Scarica il progetto Glossario.zip

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum