Vue locale (langage)
Ligne 201 : | Ligne 201 : | ||
</source> | </source> | ||
+ | '''Opérateur portant sur un type numérique :''' | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |- | ||
+ | !Opérateur | ||
+ | !Arguments | ||
+ | !Action | ||
+ | |- | ||
+ | |sum (view ope)|sum | ||
+ | |1 | ||
+ | |Effectue la somme de l'attribut | ||
+ | |- | ||
+ | |min (view ope)|min | ||
+ | |1 | ||
+ | |Effectue la somme de l'attribut | ||
+ | |- | ||
+ | |max (view ope)|max | ||
+ | |1 | ||
+ | |Retourne le max de l'attribut | ||
+ | |- | ||
+ | |sumdiff (view ope)|sumdiff | ||
+ | |2 | ||
+ | |Retourne la somme de la différence entre deux attributs | ||
+ | |- | ||
+ | |mindiff (view ope)|mindiff | ||
+ | |2 | ||
+ | |Retourne le min de la différence entre deux attributs | ||
+ | |- | ||
+ | |maxdiff (view ope)|maxdiff | ||
+ | |2 | ||
+ | |Retourne le max de la différence entre deux attributs | ||
+ | |- | ||
+ | |sumconcat (view ope)|sumconcat | ||
+ | |2 | ||
+ | |Retourne la somme de la somme entre deux attributs | ||
+ | |- | ||
+ | |minconcat (view ope)|minconcat | ||
+ | |2 | ||
+ | |Retourne la min de la somme entre deux attributs | ||
+ | |- | ||
+ | |maxconcat (view ope)|maxconcat | ||
+ | |2 | ||
+ | |Retourne le max de la somme entre deux attributs | ||
+ | |- | ||
+ | |count (view ope)|count | ||
+ | |1 | ||
+ | |Compte le nombre d'attribut | ||
+ | |} | ||
+ | |||
+ | '''Opérateur portant sur OID :''' | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |- | ||
+ | !Opérateur | ||
+ | !Arguments | ||
+ | !Action | ||
+ | |- | ||
+ | |count (view ope)|count | ||
+ | |1 | ||
+ | |Compte les éléments de la vue | ||
+ | |} | ||
+ | |||
+ | '''Opérateur portant sur une date :''' | ||
+ | |||
+ | Ces opérateur prennent une date comme argument. | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |- | ||
+ | !Opérateur | ||
+ | !Arguments | ||
+ | !Action | ||
+ | |- | ||
+ | |year (view ope)|year | ||
+ | |1 | ||
+ | |Retourne l'année de la date | ||
+ | |- | ||
+ | |quarter (view ope)|quarter | ||
+ | |1 | ||
+ | |Retourne le trimestre de la date | ||
+ | |- | ||
+ | |month (view ope)|month | ||
+ | |1 | ||
+ | |Retourne le mois de la date | ||
+ | |- | ||
+ | |dayofyear (view ope)|dayofyear | ||
+ | |1 | ||
+ | |Retourne le jour de l'année de la date | ||
+ | |- | ||
+ | |dayofweek (view ope)|dayofweek | ||
+ | |1 | ||
+ | |Retourne le jour de la semaine de la date | ||
+ | |- | ||
+ | |hour (view ope)|hour | ||
+ | |1 | ||
+ | |Retourne le nombre d'heures de la date | ||
+ | |- | ||
+ | |minute (view ope)|minute | ||
+ | |1 | ||
+ | |Retourne le nombre de minutes de la date | ||
+ | |- | ||
+ | |second (view ope)|second | ||
+ | |1 | ||
+ | |Retourne le nombre de secondes de la date | ||
+ | |- | ||
+ | |millisecond (view ope)|millisecond | ||
+ | |1 | ||
+ | |Retourne le nombre de millisecondes de la date | ||
+ | |} | ||
+ | |||
+ | '''Opérateur portant sur une référence :''' | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |- | ||
+ | !Opérateur | ||
+ | !Arguments | ||
+ | !Action | ||
+ | |- | ||
+ | |[[join (view ope)|join]] | ||
+ | |2 | ||
+ | |Réalise une jointure sur une référence | ||
+ | |} | ||
Voir aussi : | Voir aussi : |
Version du 31 mars 2014 à 08:15
Les vues locales sont des type de données vues déclarées localement à l'intérieur d'une opération.
Par exemple le code suivant déclare une vue MyView et effectue une recherche sur cette vue :
function foo(const S:string):Integer; Type MyView = viewof(ClassA) unCode:string = unCodeA; unEntier:Integer = refB.unEntierB; end; var inst:MyView; begin inst := MyView.Find('unCode=%1','',true,['B1']); if Assigned(inst) then begin ... end; end
Le périmètre du type est limité à la procédure, il n'est donc pas possible de passer les objets de la vue en paramètre à d'autres fonctions (pour cela utilisez une vue globale).
La syntaxe pour définir une vue locale :
BNF style grammar : <nom_vue> ::= ViewOf(<class_dec>) [<attributes>] end <class_dec> ::= <class_names> | <class_name> <class_dec> <class_names> ::= <class_name>| [<class_name> ,] <class_name> ::= identifier <class_dec> ::= distinct <attributes> ::= <attribute_def> | <attribute_def> <where_def> <attribute_def> ::= <simple_attribute_def> | <simple_attribute_def> <attribute_directive> <simple_attribute_def> ::= <attribute_dec> | <attribute_dec> = <attribute_ref> <attribute_dec> ::= <attribute_name> : <type_name> <attribute_ref> ::= <main_class_attribute_name> | <operator>(<main_class_attribute_name>) <operator> ::= <aggregate_operator> | <date_operator> | <join_operator> <aggregate_operator> ::= count|sum|max|min <date_operator> ::= year|month|quarter|week|day|dayofyear|dayofweek|hour|minute|second <join_operator> ::= join <attribute_directive> ::= primary | orderby | orderby desc <where_def> ::= [ <expression> ] Type NomDeVue = ViewOf(NomDeClassePrincipale) Attribut : Type; Attribut : Type = AliasDe; Attribut : Type = operator(AliasDe); Attribut : Type = AliasDe primary; Attribut : Type = AliasDe orderby; Attribut : Type = AliasDe orderby desc; [ expression ] end;
Les vues peuvent utiles pour effectuer des traitement sur des classes complexes, par exemples :
Curseur sur une classe vue :
function foo(const S:string):Integer; Type MyView = viewof(ClassA) newCode:string; unCode:string = unCodeA; unEntier:Integer = refB.unEntierB; end; var inst:MyView; cursor:MyViewCursor begin Result := 0; cursor := MyView.CreateCursorWhere(''unCode=%1'','''',true,[S]); foreach inst in cursor do begin Result := Result + inst.unEntier; end; end;
Vue sur une interface :
function foo(const S:string):Integer; Type MyView = viewof(InterfaceA, ClassA1, ClassA2) unCode:string = unCodeA primary; .... end; begin ... end;
Vue sur des combinaisons uniques d'attributs :
function foo(const S:string):Integer; Type MyView = viewof(ClassA distinct) unCode:string = unCodeA primary; unEntier:Integer = refB.unEntierB; end; begin ... end;
Vue avec agrégats :
function foo(const S:string):Integer; Type MyView = viewof(ClassA) unCode:string = unCodeA primary; unEntier:Integer = sum(unEntier); end; begin ... end;
Vue avec un opérateur de date :
function foo(const S:string):Integer; Type MyView = viewof(ClassC distinct) unCode:string = unCodeC primary; unMois:Integer = month(uneDate); end; begin ... end;
Vue avec filtre :
function foo(const S:string):Integer; Type MyView = viewof(ClassA) unCodeAA:string = unCodeA; unCodeBB:string = refB.unCodeB; [ unCodeA='A1' ] end; begin ... end;
Vue avec jointure :
//Procedure expensePendings(req:Tjson; var res:TObject); Type ExpenseView = viewOf(TNoteFrais) vp: TValideurPossible = join(ValidationEtat.EtatPossible.EtatMetier, EtatNF); aManager:string = vp.ContactEtablissement.oidutilisateur; // aDate:TDatetime = nDate; aRef:string = referencePiece; aReason:string = Caption; aAmountOrg:TMoney = MontantTTC; aAmountAct:TMoney = MontantRetenu; aQuantity:TQuantity = Quantite; aUser:string = Salarie.Operateur.oidutilisateur; aType:string = FraisSalarie.Caption; aMode:Integer = FraisSalarie.modeRemboursement; aAmountMax:TMoney = FraisSalarie.montantPlafond; aStatus:Integer = Statut; end; var json:TJson; ls:TSelector; indx,ctn:Integer; inst:ExpenseView; AWhere,AOrder:string; Args:Array[0..5] of variant; begin json := TJson.Create(''); res := json; // AWhere := '(aManager=%1) and (aStatus=%2)'; Args[0] := GlbUserName; Args[1] := StatutNF_AValider; AOrder := 'aUser,-aDate'; indx := 0; ctn := 0; ls := ExpenseView.CreateSelector(AWhere,AOrder,true,Args); foreachP inst in ls.AsCursor do begin . . . end; end;
Opérateur portant sur un type numérique :
Opérateur | Arguments | Action |
---|---|---|
sum | 1 | Effectue la somme de l'attribut |
min | 1 | Effectue la somme de l'attribut |
max | 1 | Retourne le max de l'attribut |
sumdiff | 2 | Retourne la somme de la différence entre deux attributs |
mindiff | 2 | Retourne le min de la différence entre deux attributs |
maxdiff | 2 | Retourne le max de la différence entre deux attributs |
sumconcat | 2 | Retourne la somme de la somme entre deux attributs |
minconcat | 2 | Retourne la min de la somme entre deux attributs |
maxconcat | 2 | Retourne le max de la somme entre deux attributs |
count | 1 | Compte le nombre d'attribut |
Opérateur portant sur OID :
Opérateur | Arguments | Action |
---|---|---|
count | 1 | Compte les éléments de la vue |
Opérateur portant sur une date :
Ces opérateur prennent une date comme argument.
Opérateur | Arguments | Action |
---|---|---|
year | 1 | Retourne l'année de la date |
quarter | 1 | Retourne le trimestre de la date |
month | 1 | Retourne le mois de la date |
dayofyear | 1 | Retourne le jour de l'année de la date |
dayofweek | 1 | Retourne le jour de la semaine de la date |
hour | 1 | Retourne le nombre d'heures de la date |
minute | 1 | Retourne le nombre de minutes de la date |
second | 1 | Retourne le nombre de secondes de la date |
millisecond | 1 | Retourne le nombre de millisecondes de la date |
Opérateur portant sur une référence :
Opérateur | Arguments | Action |
---|---|---|
join | 2 | Réalise une jointure sur une référence |
Voir aussi :