Scopo
Questa procedura comunica al DBMS di aprire una nuova transazione.
Sintassi
Database.BeginTransaction()
Esempio di codice
// *****************************
// Esegue il commit di un ordine
// *****************************
public void NuovaVideata.Docommit()
{
int quant = 0 //
//
// Apro la transazione
Dbesempidp.BeginTransaction()
//
// ciclo su tutti gli ordini
for each row (Ordine)
{
record Record
int IdordineOrdined //
int IdcomponenteOrdined //
int QuantitaOrdined //
//
// Leggo la quantità presente in magazzino
select into variables
set quant := Quantita
from
Componenti // Tabella Master
where
ID = Record.IdcomponenteOrdined
//
if quant >= Record.QuantitaOrdined
{
// inserisco la riga dell'ordine
insert values into Ordini
set ID := Record.IdordineOrdined
set IDComponente := Record.IdcomponenteOrdined
set Quantita := Record.QuantitaOrdined
}
else // errore: rollback e avverto
{
Dbesempidp.RollbackTransaction()
Esempidp.MessageBox(FormatMessage(MSG Prodotto Codice, Record.
IdcomponenteOrdined, ??, ??, ??, ??))
//
// esco dalla procedura
return
}
}
//
// Eseguo il commit: la transazione è andata a buon fine
Dbesempidp.CommitTransaction()
//
// Creo il nuovo numero di ordine
Esempidp.Randomize()
this.Ordinenum := Trunc(Random(??) * C10000, ZERO)
//
// Elimino i dati dell'ordine dalla tabella IMDB
delete from Ordinet
//
// Aggiorno le icone
update Components
set Selected := ZERO
//
Esempidp.MessageBox(MSG Ordine Eseguito)
}
// Esegue il commit di un ordine
// *****************************
public void NuovaVideata.Docommit()
{
int quant = 0 //
//
// Apro la transazione
Dbesempidp.BeginTransaction()
//
// ciclo su tutti gli ordini
for each row (Ordine)
{
record Record
int IdordineOrdined //
int IdcomponenteOrdined //
int QuantitaOrdined //
//
// Leggo la quantità presente in magazzino
select into variables
set quant := Quantita
from
Componenti // Tabella Master
where
ID = Record.IdcomponenteOrdined
//
if quant >= Record.QuantitaOrdined
{
// inserisco la riga dell'ordine
insert values into Ordini
set ID := Record.IdordineOrdined
set IDComponente := Record.IdcomponenteOrdined
set Quantita := Record.QuantitaOrdined
}
else // errore: rollback e avverto
{
Dbesempidp.RollbackTransaction()
Esempidp.MessageBox(FormatMessage(MSG Prodotto Codice, Record.
IdcomponenteOrdined, ??, ??, ??, ??))
//
// esco dalla procedura
return
}
}
//
// Eseguo il commit: la transazione è andata a buon fine
Dbesempidp.CommitTransaction()
//
// Creo il nuovo numero di ordine
Esempidp.Randomize()
this.Ordinenum := Trunc(Random(??) * C10000, ZERO)
//
// Elimino i dati dell'ordine dalla tabella IMDB
delete from Ordinet
//
// Aggiorno le icone
update Components
set Selected := ZERO
//
Esempidp.MessageBox(MSG Ordine Eseguito)
}
- Questa istruzione apre una transazione, deve essere chiamata prima di qualunque modifica ai dati. Per riferimenti relativi alla sequenza di operazioni da eseguire vedere l'articolo Transaction Statements.
- Questa procedura deve essere chiamata sul DB e non sull'applicazione.
Ultima modifica: 23/03/2021 / Validità: da 6.5.2680