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