TSelectorConstraint (selector)
De Wiki1000
(Différences entre les versions)
(Page créée avec « <source lang='delphi'>TSelectorConstraint:TObject;</source> Cet objet matérialise une contrainte posée sur un sélecteur. ===Attributs=== {|class="wikitable" |- !Attr... ») |
|||
| Ligne 1 : | Ligne 1 : | ||
| + | {{latest}} | ||
<source lang='delphi'>TSelectorConstraint:TObject;</source> | <source lang='delphi'>TSelectorConstraint:TObject;</source> | ||
| Ligne 43 : | Ligne 44 : | ||
|} | |} | ||
| + | ===Exemples d'utilisation de contrainte=== | ||
| + | |||
| + | '''Contrainte venant d'une référence''' | ||
| + | |||
| + | <source lang="delphi"> | ||
| + | function doSelector(const iCodeA:string; const iCodeB:string):Integer; | ||
| + | var selA:TSelector; obj:TObject; | ||
| + | begin'+ | ||
| + | selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); | ||
| + | obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); | ||
| + | Result := selA.Count; | ||
| + | end; | ||
| + | </source> | ||
| + | |||
| + | '''Contrainte venant d'une référence inversée''' | ||
| + | |||
| + | <source lang="delphi"> | ||
| + | function doSelector(const iCodeA:string; const iCodeB:string):Integer; | ||
| + | var selB:TSelector; obj:TObject; | ||
| + | begin | ||
| + | selB := ClassB.CreateSelector('unCodeB=%1','unCodeB',True,[iCodeB]); | ||
| + | obj := selB.AddConstraint(nil, 'ClassA','refB','oid','unCodeA=%1',[iCodeA]); | ||
| + | Result := selB.Count; | ||
| + | end; | ||
| + | </source> | ||
| + | |||
| + | '''Contrainte en cascade''' | ||
| + | |||
| + | <source lang="delphi"> | ||
| + | function doSelector(const iCodeA:string; const iCodeB:string):Integer; | ||
| + | var selA:TSelector; obj:TObject; | ||
| + | begin | ||
| + | selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); | ||
| + | obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); | ||
| + | obj := selA.AddConstraint(obj, 'ClassA2','refB','oid','AliasOf(''ClassA'',''unCodeA'')=unCodeA',[]); | ||
| + | Result := selA.Count; | ||
| + | end; | ||
| + | </source> | ||
| + | |||
| + | '''Contrainte entre classes''' | ||
| + | |||
| + | <source lang="delphi"> | ||
| + | function doSelector(const iCodeA:string; const iCodeB:string):Integer; | ||
| + | var selB:TSelector; obj:TObject; | ||
| + | begin | ||
| + | selB := ClassB.CreateSelector('unCodeB=%1','unCodeB',True,[iCodeB]); | ||
| + | obj := selB.AddConstraint(nil, 'ClassA','refB','oid','',[]); | ||
| + | obj := selB.AddConstraint(nil, 'ClassA2','refB','oid','(AliasOf(''ClassA'',''unCodeA'')=unCodeA) and (unCodeA=%1)',[iCodeA]); | ||
| + | Result := selB.Count; | ||
| + | end; | ||
| + | </source> | ||
| + | |||
| + | '''Mise à jour''' | ||
| + | |||
| + | <source lang="delphi"> | ||
| + | function doSelector(const iCodeA:string; const iCodeB:string):Integer; | ||
| + | var selA:TSelector; obj:TObject; | ||
| + | begin | ||
| + | selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); | ||
| + | obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); | ||
| + | withP long transaction do | ||
| + | begin | ||
| + | Result := selA.Update(['unEntierA'],[0]); | ||
| + | end; | ||
| + | end; | ||
| + | </source> | ||
| + | |||
| + | '''Mise à jour en utilisant un attribut de la contrainte''' | ||
| + | |||
| + | <source lang="delphi"> | ||
| + | function doSelector(const iCodeA:string; const iCodeB:string):Integer; | ||
| + | var selA:TSelector; obj:TObject; | ||
| + | begin | ||
| + | selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); | ||
| + | obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); | ||
| + | obj := selA.AddConstraint(obj, 'ClassA2','refB','oid','AliasOf(''ClassA'',''unCodeA'')=unCodeA',[]); | ||
| + | withP long transaction do | ||
| + | begin | ||
| + | Result := selA.Update(['unEntierA'],['ClassA2.unEntierA']); | ||
| + | end; | ||
| + | end; | ||
| + | </source> | ||
Voir aussi : | Voir aussi : | ||
Version du 5 juillet 2016 à 13:04
TSelectorConstraint:TObject;
Cet objet matérialise une contrainte posée sur un sélecteur.
Attributs
| Attribut | Usage |
|---|---|
| Parent | Objet parent de la contrainte |
| ClassName | Nom de la classe sur laquelle porte la sélection |
| Left | Nom de l'attribut gauche |
| Right | Nom de l'attribut droit |
| Where | Clause Where de la contrainte |
| ArgCount | Nombre d'arguments de la clause where |
| Args[] | Argument de la clause where |
Méthodes d'instance
| Méthode | Usage |
|---|---|
| Delete | Supprime la contrainte |
Exemples d'utilisation de contrainte
Contrainte venant d'une référence
function doSelector(const iCodeA:string; const iCodeB:string):Integer; var selA:TSelector; obj:TObject; begin'+ selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); Result := selA.Count; end;
Contrainte venant d'une référence inversée
function doSelector(const iCodeA:string; const iCodeB:string):Integer; var selB:TSelector; obj:TObject; begin selB := ClassB.CreateSelector('unCodeB=%1','unCodeB',True,[iCodeB]); obj := selB.AddConstraint(nil, 'ClassA','refB','oid','unCodeA=%1',[iCodeA]); Result := selB.Count; end;
Contrainte en cascade
function doSelector(const iCodeA:string; const iCodeB:string):Integer; var selA:TSelector; obj:TObject; begin selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); obj := selA.AddConstraint(obj, 'ClassA2','refB','oid','AliasOf(''ClassA'',''unCodeA'')=unCodeA',[]); Result := selA.Count; end;
Contrainte entre classes
function doSelector(const iCodeA:string; const iCodeB:string):Integer; var selB:TSelector; obj:TObject; begin selB := ClassB.CreateSelector('unCodeB=%1','unCodeB',True,[iCodeB]); obj := selB.AddConstraint(nil, 'ClassA','refB','oid','',[]); obj := selB.AddConstraint(nil, 'ClassA2','refB','oid','(AliasOf(''ClassA'',''unCodeA'')=unCodeA) and (unCodeA=%1)',[iCodeA]); Result := selB.Count; end;
Mise à jour
function doSelector(const iCodeA:string; const iCodeB:string):Integer; var selA:TSelector; obj:TObject; begin selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); withP long transaction do begin Result := selA.Update(['unEntierA'],[0]); end; end;
Mise à jour en utilisant un attribut de la contrainte
function doSelector(const iCodeA:string; const iCodeB:string):Integer; var selA:TSelector; obj:TObject; begin selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]); obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); obj := selA.AddConstraint(obj, 'ClassA2','refB','oid','AliasOf(''ClassA'',''unCodeA'')=unCodeA',[]); withP long transaction do begin Result := selA.Update(['unEntierA'],['ClassA2.unEntierA']); end; end;
Voir aussi :
| Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |