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

Begin Transaction

funzione copia link

Scopo

Inizia una nuova transazione su un documento e ne ritorna il puntatore che la identifica.

NOTA BENE: è opportuno racchiudere qualunque operazione di modifica su un progetto all'interno di una transazione.

Sintassi

INDEExtension INDE = null // Oggetto INDE
int IDTransazione = 0     // Puntatore alla transazione
// 
IDTransazione := INDE.BeginTransaction(id documento)

Argomenti

ID Documento Puntatore all documento su cui iniziare la transazione. Può essere recuperato con la funzione GetObjectDocument se si conosce il puntatore ad un oggetto del progetto da modificare

Valore di ritorno

Ritorna un numero intero che rappresenta il puntatore alla nuova transazione aperta sul documento.

Note

  • Le modifiche apportate ad un documento o ad uno dei suoi oggetti fuori transazione non cambiano lo stato del documento, ovvero se il documento non era modificato resta tale.
  • Il puntatore al documento può essere ottenuto tramite le funzioni GetObjectDocument, GetActiveDocument o OpenDocument.
  • La transazione deve essere chiusa al termine delle modifiche chiamando la procedura CommitTransaction oppure RollbackTransaction.

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.RoolbackTransaction(TrID)
    }
  }
}

Il codice riportato sopra lo si può vedere nella procedura Rinomina all'interno del progetto Glossario.zip allegato. Nell'esempio questa funzione viene usata per aprire un transazione in cui vengono rinominati i nomi degli oggetti.

Ultima modifica: 13/07/2008 / Validità: da 7.1.3300

Vedi anche

  • Commit Transaction (procedura)
  • Abort Transaction (procedura)
  • Rollback Transaction (procedura)
  • Get Object Document (funzione)
  • Get Active Document (funzione)
  • Scarica il progetto Glossario.zip

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum