« RenumberAndSeal (TSealOpeLogRegClass) » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(3 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> | ||
{|class="wikitable" | {|class="wikitable" | ||
Ligne 15 : | Ligne 13 : | ||
|- | |- | ||
|iUpdateProperties | |iUpdateProperties | ||
|Liste d' | |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 —
}}