« RenumberAndSeal (TSealOpeLogRegClass) » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| 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 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'attribut à 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 —
}}