RenumberAndSeal (TSealOpeLogRegClass)

De Wiki1000
(Différences entre les versions)
 
(Une révision intermédiaire par un utilisateur est masquée)
Ligne 13 : Ligne 13 :
 
|-
 
|-
 
|iUpdateProperties
 
|iUpdateProperties
|Liste d'attribut à mettre à jour
+
|Liste d'attributs à mettre à jour
 
|-
 
|-
 
|iLastSequenceNumber
 
|iLastSequenceNumber
Ligne 31 : Ligne 31 :
  
 
{{tip|Du fait que Renumber met à jour les objets par SQL, les attributs mis à jour (iUpdateProperties) ne doivent pas être protégés.}}
 
{{tip|Du fait que Renumber met à jour les objets par SQL, les attributs mis à jour (iUpdateProperties) ne doivent pas être protégés.}}
 +
{{Tip|Cette méthode est une opération exclusive, la classe journal est vérrouillée durant l'opération}}
  
 
Exemple :
 
Exemple :

Version actuelle en date du 13 avril 2017 à 09:48

class function RenumberAndSeal(sel:TSelector; const iUpdateProperties:Array of variant; iUpdateValues:Array of variant; var aReason:string):Integer;
Paramètre Usage
Result Nombre d'objet scellé, 0 indique une erreur
sel Sélecteur de la classe scellée
iUpdateProperties Liste d'attributs à mettre à jour
iLastSequenceNumber Liste des valeurs des attributs à mettre à jour
aReason Information sur l'erreur

Cette méthode renumérote et scelle les objets référencés par le sélecteur et crée un enregistrement de journal.

La méthode :

  • Utilise le prochain numéro de séquence issu du dernier enregistrement de journal.
  • Crée un enregistrement de journal
  • Gère une transaction longue si aucune transaction longue n'est ouverte.
Tip-20px.png Tip : Du fait que Renumber met à jour les objets par SQL, les attributs mis à jour (iUpdateProperties) ne doivent pas être protégés.
Tip-20px.png Tip : Cette méthode est une opération exclusive, la classe journal est vérrouillée durant l'opération

Exemple :

Utilisation à l'intérieur d'une transaction longue :

function RenumberAndSealInsideLT(var aReason:string):Intege;
var AStr:string; sel:TSelector;
begin
   sel := ClassSealed.CreateSelector('(SequenceNumber=%1)','',True,[0]);
   Result := sel.Count;
   if Result=0 then
    begin
      aReason := 'Nothing to seal';
      Exit;
    end;
 
  ClassManager.BeginLongTran(0,'ClassSealed');
  try
    Result := ClassSealOpeLog.RenumberAndSeal(sel,['isSealed'],[True],aStr);
    if Result=0 then
     begin
       aReason := aStr;
       ClassManager.RollBackLongTran;
       Exit;
     end;
   ClassManager.CommitLongTran;
  except
  Result := 0;
  ClassManager.RollBackLongTran;
  end;
end;


Utilisation avec transaction gérée par la méthode :

function RenumberAndSealManageLT(var aReason:string):Intege;
ar AStr:string; sel:TSelector;
begin
   sel := ClassSealed.CreateSelector('(SequenceNumber=%1)','',True,[0]);
   Result := sel.Count;
   if Result=0 then
    begin
      aReason := 'Nothing to seal';
      Exit;
    end;
 
    Result := ClassSealOpeLog.RenumberAndSeal(sel,['isSealed'],[True],aStr);
    if Result=0 then
     begin
       aReason := aStr;
       Exit;
     end;
end;

Voir aussi

Classe_journal de scellement_(stereotype)Développement DSM





Whos here now:   Members 0   Guests 1   Bots & Crawlers 0
 
Outils personnels