« AllocTranContext (CM) » : différence entre les versions

De Wiki1000
Aucun résumé des modifications
Aucun résumé des modifications
 
(3 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
<source lang='delphi'>function AllocTranContext:Integer;</source>
<source lang='delphi'>function AllocTranContext:Int64;</source>


Cette fonction alloue un contexte de transaction.
Cette fonction alloue un contexte de transaction.


{{info|Cette fonction ne change pas le contexte en cours.}}
{{info|Cette fonction ne change pas le contexte en cours.}}
{{Warning|Le type de donnée pour stocker le context doit être un entier 64 bits}}


{|class="wikitable"
{|class="wikitable"
Ligne 17 : Ligne 18 :
'''Exécution d'une transaction séparée.'''
'''Exécution d'une transaction séparée.'''
<source lang='delphi'>
<source lang='delphi'>
var new,old:Integer;
var new,old:Int64;
begin
begin
   new := ClassManager.AllocTranContext;
   new := ClassManager.AllocTranContext;
   old := ClassManager.ActivateTranContext(new);
   old := ClassManager.ActivateContext(new);
   try
   try
   ClassManager.BeginTran;
   ClassManager.BeginTran;
Ligne 38 : Ligne 39 :
'''Forme compacte'''
'''Forme compacte'''
<source lang='delphi'>
<source lang='delphi'>
var old:Integer;
var old:Int64;
begin
begin
   old := ClassManager.ActivateTranContext(ClassManager.AllocTranContext);
   old := ClassManager.ActivateContext(ClassManager.AllocTranContext);
   try
   try
   ClassManager.BeginTran;
   ClassManager.BeginTran;

Dernière version du 6 février 2019 à 13:15

<source lang='delphi'>function AllocTranContext:Int64;</source>

Cette fonction alloue un contexte de transaction.

Note : Cette fonction ne change pas le contexte en cours.
Attention : Le type de donnée pour stocker le context doit être un entier 64 bits
Result Un entier représentant un nouveau contexte de transaction

Cette fonction et ses compagnions permettent d'exécuter une transaction dans un contexte séparé du contexte courant. Elles permettent, par exemple, de s'assurer d'une mise d'un objet même si une transaction est en cours et peut éventuellement échouer.

Exemple

Exécution d'une transaction séparée. <source lang='delphi'> var new,old:Int64; begin

 new := ClassManager.AllocTranContext;
 old := ClassManager.ActivateContext(new);
 try
  ClassManager.BeginTran;
  try
    ...
    ClassManager.Commit;
  except
  ClassManager.RollBack;
  end;
 finally
 ClassManager.DeActivateContext(new);
 ClassManager.ActivateContext(old);
 end;

end; </source>

Forme compacte <source lang='delphi'> var old:Int64; begin

 old := ClassManager.ActivateContext(ClassManager.AllocTranContext);
 try
  ClassManager.BeginTran;
  try
    ...
    ClassManager.Commit;
  except
  ClassManager.RollBack;
  end;
 finally
 ClassManager.ActivateContext(old);
 end;

end; </source>

Voir aussi


{{#if:Gestion des transactions (CM)|

{{#if:Gestion des transactions (CM)|— Gestion des transactions (CM) |}} — Développement DSM

|

{{#if:|— [[{{{1}}}]] |}} — Développement DSM

}}