« RenumberAndSeal (TSealOpeLogRegClass) » : différence entre les versions

De Wiki1000
Aucun résumé des modifications
Aucun résumé des modifications
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
<source lang='delphi'>class function RenumberAndSeal(sel:TSelector; const iUpdateProperties:Array of variant; iUpdateValues:Array of variant; var aReason:string):Integer;</source>
<source lang='delphi'>class function RenumberAndSeal(sel:TSelector; const iUpdateProperties:Array of variant; iUpdateValues:Array of variant; var aReason:string):Integer;</source>
Cette méthode renumérote et scelle les objets référencés par le sélecteur et crée un enregistrement de journal.


{|class="wikitable"
{|class="wikitable"
Ligne 15 : Ligne 13 :
|-
|-
|iUpdateProperties
|iUpdateProperties
|Liste d'attribut à mettre à jour
|Liste d'attributs à mettre à jour
|-
|-
|iLastSequenceNumber
|iLastSequenceNumber
Ligne 24 : Ligne 22 :
|}
|}


Cette méthode [[Renumber_(selector)|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|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 :
'''Utilisation à l'intérieur d'une transaction longue :'''
<source lang=Delphi>
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;
</source>
'''Utilisation avec transaction gérée par la méthode :'''
<source lang=Delphi>
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;
</source>


Voir aussi
Voir aussi

Dernière version du 13 avril 2017 à 07:48

<source lang='delphi'>class function RenumberAndSeal(sel:TSelector; const iUpdateProperties:Array of variant; iUpdateValues:Array of variant; var aReason:string):Integer;</source>

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 : 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 :

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

<source lang=Delphi> 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; </source>


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

<source lang=Delphi> 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; </source>

Voir aussi

{{#if:Classe_journal de scellement_(stereotype)|

{{#if:Classe_journal de scellement_(stereotype)|— Classe_journal de scellement_(stereotype) |}} — Développement DSM

|

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

}}