Update (selector)
De Wiki1000
(Différences entre les versions)
Ligne 47 : | Ligne 47 : | ||
</source> | </source> | ||
− | '''Mise à jour d'un attribut d'une classe avec une valeur | + | '''Mise à jour d'un attribut d'une classe avec une valeur issue d'une contrainte''' |
Pour mettre à jour un attribut avec une valeur issue d'une colonne utilisez le nom de la colonne préfixé du nom de la table. | Pour mettre à jour un attribut avec une valeur issue d'une colonne utilisez le nom de la colonne préfixé du nom de la table. | ||
Ligne 53 : | Ligne 53 : | ||
<source lang='delphi'> | <source lang='delphi'> | ||
function doSelector(const iCodeA:string; const iCodeB:string):Integer; | function doSelector(const iCodeA:string; const iCodeB:string):Integer; | ||
− | var selA:TSelector; | + | var selA:TSelector; c1,c2:TSelectorConstraint; |
begin | begin | ||
selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); | selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); | ||
− | + | c1 := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); | |
− | + | c2 := selA.AddConstraint(obj, 'ClassA2','refB','oid','AliasOf(''ClassA'',''unCodeA'')=unCodeA',[]); | |
withP long transaction do | withP long transaction do | ||
begin | begin | ||
− | Result := selA.Update(['unEntierA'],[' | + | Result := selA.Update(['unEntierA'],['C2.unEntierA']); |
end; | end; | ||
end; | end; |
Version actuelle en date du 17 novembre 2016 à 16:00
function Update(const iUpdatePropNames:Array of string; const iUpdatePropValues:Array of variant):Integer;
Cette méthode met à jour les objets sélectionnés par le sélecteur
Paramètre | Usage |
---|---|
Result | Nombre d'objets affectés par l'opération |
iUpdatePropNames | Tableau de nom d'attribut devant être mis à jour dans la même opération |
iUpdatePropValues | Tableau de valeur pour les attributs mis à jour |
Cette fonction retourne le nombre d'objets affectés par l'opération.
- iUpdatePropnames,iUpdatePropValues
- C'est deux tableaux doivent avoir le même nombre d'élément et doivent référencer des attributs de la classe du sélecteur
Tip : L'opération est effectué par un ordre SQL en mode auto commit, si une transaction longue est ouverte la session de la transaction longue est utilisée. |
Exemple :
L'exemple suivant met à jour les objets de la classe ClassC pour lesquels unBool est faux.
Mise à jour d'attributs avec des constantes
function doUpdate(aDate:Tdatetime):Integer; var sel:TSelector; begin ClassManager.BeginLongTran(10,'ClassC'); try sel := ClassC.CreateSelector('unBool=%1','unEntierC',True,[False]); Result := sel.Update(['unBool','uneDate'],[True,aDate]); ClassManager.CommitLongTran; except ClassManager.RollBackLongTran; raise end; end;
Mise à jour d'un attribut d'une classe avec une valeur issue d'une contrainte
Pour mettre à jour un attribut avec une valeur issue d'une colonne utilisez le nom de la colonne préfixé du nom de la table.
function doSelector(const iCodeA:string; const iCodeB:string):Integer; var selA:TSelector; c1,c2:TSelectorConstraint; begin selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); c1 := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); c2 := selA.AddConstraint(obj, 'ClassA2','refB','oid','AliasOf(''ClassA'',''unCodeA'')=unCodeA',[]); withP long transaction do begin Result := selA.Update(['unEntierA'],['C2.unEntierA']); end; end;
Voir aussi :