Expressions objets (code)

De Wiki1000
(Différences entre les versions)
(Nouvelle page : ===Introduction=== Le framework 1000 utilise des expressions objets pour exprimer sous forme objets des conditions utilisées dans les requêtes objets. Ces expressions objets sont e...)
 
m
 
(7 révisions intermédiaires par un utilisateur sont masquées)
Ligne 1 : Ligne 1 :
===Introduction===
+
=== Introduction ===
 
Le framework 1000 utilise des expressions objets pour exprimer sous forme objets des conditions utilisées dans les requêtes objets. Ces expressions objets sont ensuite traduites en clauses dans les requêtes SQL ou évaluées directement sur les objets métiers.
 
Le framework 1000 utilise des expressions objets pour exprimer sous forme objets des conditions utilisées dans les requêtes objets. Ces expressions objets sont ensuite traduites en clauses dans les requêtes SQL ou évaluées directement sur les objets métiers.
  
 
La syntaxe de ces expressions est généralement identique à leur équivalent dans le langage 1000, des fonctionnalités suplémentaires ont été introduites pour utiliser les possibilités offertes par les bases de données.
 
La syntaxe de ces expressions est généralement identique à leur équivalent dans le langage 1000, des fonctionnalités suplémentaires ont été introduites pour utiliser les possibilités offertes par les bases de données.
  
===Notation===
+
=== Notation ===
 
Les expressions objets utilisent la notation pointée et la syntaxe Pascal.
 
Les expressions objets utilisent la notation pointée et la syntaxe Pascal.
  
===Arguments===
+
=== Arguments ===
 
Les expressions peuvent être paramétrés par des arguments généralement passés sous forme d'un tableau de variant ou placés dans une propriété tableau.
 
Les expressions peuvent être paramétrés par des arguments généralement passés sous forme d'un tableau de variant ou placés dans une propriété tableau.
  
Ligne 18 : Ligne 18 :
 
  '(code=%1) and (date>%2) and (date<%3)', ['FRF',Now-1,Now+1]
 
  '(code=%1) and (date>%2) and (date<%3)', ['FRF',Now-1,Now+1]
  
===Opérateurs===
+
=== Opérateurs ===
 
Les opérateurs de comparaison et les opérateurs logiques du langage sont utilisables dans les expressions objets.
 
Les opérateurs de comparaison et les opérateurs logiques du langage sont utilisables dans les expressions objets.
  
Ligne 90 : Ligne 90 :
 
  typeCompte.value = compteBilan
 
  typeCompte.value = compteBilan
  
===Fonctions===
+
=== Fonctions ===
 
Certaines fonctions peuvent être utilisées dans les expressions objets :
 
Certaines fonctions peuvent être utilisées dans les expressions objets :
 +
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
|<source lang='delphi'>function CountObjectsWhere(iClassName:string; iExpression:string):Integer;</source>
+
|[[CountObjectsWhere (exp)|CountObjectsWhere]]
 
|Compte le nombre d'objet de iClassName vérifiant iExpression.  
 
|Compte le nombre d'objet de iClassName vérifiant iExpression.  
 
|-
 
|-
|<source lang='delphi'>function ExistsObjectsWhere(iClassName:string; iExpression:string):Integer;</source>
+
|[[ExistsObjectsWhere (exp)|ExistsObjectsWhere]]
 
|Retourne 1 si il existe au moins un objet de iClassName vérifiant iExpression; retourne 0 sinon.
 
|Retourne 1 si il existe au moins un objet de iClassName vérifiant iExpression; retourne 0 sinon.
 
|-
 
|-
|<source lang='delphi'>function DatePart(const PartOfDate:TPartOfDate; const Attribute:Identifier):Integer;</source>
+
|[[DatePart (exp)|DatePart]]
 
|Retourne la partie de la date indiquée par PartOfDate de la valeur de l'attribut Attribute
 
|Retourne la partie de la date indiquée par PartOfDate de la valeur de l'attribut Attribute
{|
 
 
|-
 
|-
|PartOfDate
+
|[[Round (exp)|Round]]
|Constante de l'énumération TPartOfDate
+
|-
+
|Attribute
+
|Référence à un attribut de type date.
+
|}
+
|-
+
|<source lang='delphi'>function Round(value:Double; len:Integer):Double;</source>
+
 
|Arrondi le nombre flottant value à la longueur len.
 
|Arrondi le nombre flottant value à la longueur len.
 
|-
 
|-
|<source lang='delphi'>function Assigned(const value:Identifier):Boolean;</source>
+
|[[Assigned (exp)|Assigned]]
 
|Retourne True si l'objet contenu dans l'argument value est affecté
 
|Retourne True si l'objet contenu dans l'argument value est affecté
 
|-
 
|-
|<source lang='delphi'>function True():boolean;</source>
+
|[[True (exp)|True]]
 
|Retourne la valeur constante Vrai.
 
|Retourne la valeur constante Vrai.
 +
|-
 +
|[[Haversine (exp)|Haversine]]
 +
|Retourne la distance entre un attribut Geolocation et un jeu de coordonnées.
 +
|-
 +
|[[lowerCase (exp)|lowerCase]]
 +
|Retourne la valeur en minuscule du paramètre chaine
 +
|-
 +
|[[upperCase (exp)|upperCase]]
 +
|Retourne la valeur en majuscule du paramètre chaine
 
|}
 
|}
  
Exemples :
+
=== Jointures ===
 
+
'''Utilisation de ExistsObjectWhere'''
+
<source lang='delphi'>
+
var aList:TConstitutionSectionGCList;
+
begin
+
  aList := TConstitutionSectionGC.CreateList;
+
  aList.AddWhere('ExistsObjectsWhere(''TIdentificationCentreGC'',''(oidConstitutionSectionGC=self.oid) and (identificationCentreNF<>%1)'')','','',True,-1,['']);
+
  for idx := 0 to aList.count-1 do
+
  begin
+
  end;
+
end;
+
</source>
+
 
+
===Jointures===
+
 
La traversée d’un rôle se traduit en terme SQL par une jointure.  
 
La traversée d’un rôle se traduit en terme SQL par une jointure.  
  
Ligne 158 : Ligne 146 :
 
|}
 
|}
  
===Ordre de trie===
+
=== Ordre de tri ===
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
Ligne 169 : Ligne 157 :
  
 
{{Footer|Code métier}}
 
{{Footer|Code métier}}
[[category:Objets techniques]]
+
[[category:Code métier]]
 +
[[Category:Expressions]]

Version actuelle en date du 20 juin 2019 à 12:23

Sommaire

Introduction

Le framework 1000 utilise des expressions objets pour exprimer sous forme objets des conditions utilisées dans les requêtes objets. Ces expressions objets sont ensuite traduites en clauses dans les requêtes SQL ou évaluées directement sur les objets métiers.

La syntaxe de ces expressions est généralement identique à leur équivalent dans le langage 1000, des fonctionnalités suplémentaires ont été introduites pour utiliser les possibilités offertes par les bases de données.

Notation

Les expressions objets utilisent la notation pointée et la syntaxe Pascal.

Arguments

Les expressions peuvent être paramétrés par des arguments généralement passés sous forme d'un tableau de variant ou placés dans une propriété tableau.

La référence aux arguments se fait par le signe % suivi du numéro de l'argument.

La numérotation des arguments commence à 1.

Exemple :

'(code=%1) and (date>%2) and (date<%3)', ['FRF',Now-1,Now+1]

Opérateurs

Les opérateurs de comparaison et les opérateurs logiques du langage sont utilisables dans les expressions objets.

Opérateur Usage
= Egalité
eq Egalité
<> Différence
ne Différence
> Supérieur
gt Supérieur
< Inférieur
lt Inférieur
>= Supérieur ou égale
ge Supérieur ou égale
<= Inférieur ou égale
le Inférieur ou égale
OR Ou logique
AND Et logique
NOT Non logique
like L'opérande de gauche vérifie le modèle contenu dans l'opérande de droite

Les caractères % et _ sont des caractères jokers du modèle

in L'opérande de gauche est contenu dans l'opérande de droite

L'opérande de droite est une liste de valeur (chaîne ou nombre) séparées par des virgules placée entre parenthèses

Exemple

codeCompte like '10%'
codePays in ('FR','EN','US')
codePays in %1
typeCompte.value = compteBilan

Fonctions

Certaines fonctions peuvent être utilisées dans les expressions objets :

CountObjectsWhere Compte le nombre d'objet de iClassName vérifiant iExpression.
ExistsObjectsWhere Retourne 1 si il existe au moins un objet de iClassName vérifiant iExpression; retourne 0 sinon.
DatePart Retourne la partie de la date indiquée par PartOfDate de la valeur de l'attribut Attribute
Round Arrondi le nombre flottant value à la longueur len.
Assigned Retourne True si l'objet contenu dans l'argument value est affecté
True Retourne la valeur constante Vrai.
Haversine Retourne la distance entre un attribut Geolocation et un jeu de coordonnées.
lowerCase Retourne la valeur en minuscule du paramètre chaine
upperCase Retourne la valeur en majuscule du paramètre chaine

Jointures

La traversée d’un rôle se traduit en terme SQL par une jointure.

Un certain nombre d’extensions ont été ajoutées à cette notation pour permettre de spécifier certaines caractéristiques supplémentaires :

Signe Usage
«.» jointure simple.
«.+» jointure externe.
«^» jointure simple sur la classe d'association de la relation.
«^+» jointure externe sur la classe d'association de la relation.

Ordre de tri

Signe Usage
«-» placé devant un attribut placé dans un critère de tri indique un tri décroissant.

Code métierDéveloppement DSM

Outils personnels