Fonctionnement du moteur des rapports: Difference between revisions
imported>Jcheng |
imported>Jcheng |
||
Line 24: | Line 24: | ||
FROM ma_table | FROM ma_table | ||
WHERE mon_champ='test'</sql> | WHERE mon_champ='test'</sql> | ||
==Champ de saisie== | |||
===Champ de type "dbObject"=== | |||
Dans le formulaire, le champs de type "dbObject" est représenté sous forme de liste déroulante où est proposé comme choix : | |||
* "Pas de filtre" comme premier choix | |||
* La liste des différents "objets" comme autre choix. Par exemple, un type "dbObject::Person" va donner la liste des utilisateurs | |||
Une variable associé à ce type de champ recevra comme valeur possible : | |||
* Lorsque "Pas de filtre" est sélectionné, le caractère : - | |||
* Lorsqu'une valeur est sélectionnée, un id sous forme de nombre | |||
Exemple de prise en compte de la variable au niveau du rapport : Liste des utilisateurs actifs possédant le profil "$profileId" | |||
<sql>SELECT person.* | |||
FROM person | |||
LEFT JOIN profile ON person.profile & profile.id | |||
WHERE profile.id='$profileId' | |||
AND activated=1</sql> | |||
Exemple de prise en compte de la variable au niveau du rapport : Liste des utilisateurs actifs avec ou non, un filtre sur le profil | |||
<sql>SELECT * | |||
FROM person | |||
LEFT JOIN profile ON person.profile & profile.id | |||
WHERE ( profile.id='$profileId' OR '-'='$profileId' )</sql> | |||
===Champ de type "dbObjectMulti"=== | |||
Dans le formulaire, le champ de type "dbObjectMulti" est représenté sous forme de liste de cases à cocher où est proposé comme choix : | |||
* La liste des différents "objets" comme autre choix. Par exemple, un type "dbObjectMulti::Profile" va donner la liste des profils | |||
Une variable associé à ce type de champ recevra comme valeur possible : | |||
* Lorsque rien n'est coché, la chaîne : '-'. Cela est considéré comme "Pas de filtre". | |||
* Lorsqu'une valeur est cochée, un id sous forme de nombre | |||
* Lorsque plusieurs valeurs sont cochées, plusieurs id sous forme de chaîne suivante : 1,2,3 | |||
Exemple de prise en compte de la variable au niveau du rapport : Liste des utilisateurs actifs possédant le profil "$profileId" | |||
<sql>SELECT person.* | |||
FROM person | |||
LEFT JOIN profile ON person.profile & profile.id | |||
WHERE profile.id IN ($profileId) | |||
AND activated=1</sql> | |||
Exemple de prise en compte de la variable au niveau du rapport : Liste des utilisateurs actifs avec ou non, un filtre sur le profil | |||
<sql>SELECT * | |||
FROM person | |||
LEFT JOIN profile ON person.profile & profile.id | |||
WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )</sql> |
Revision as of 11:36, 23 October 2017
Présentation
L'objet de cette page est de présenter le fonctionnement du moteur des rapports.
Visualisation de rapport
Lors d'une demande de visualisation de rapport, le moteur des rapports :
- Récupère les valeurs des champs de saisie affichées dans le formulaire et stocke ces valeurs dans les variables correspondantes à ces champs de saisie
- Extrait la requête du rapport
- Remplace dans la requête, chaque variable par leur valeur correspondante
- Interprète la requête
- Affiche le résultat sous forme de tableau
Exemple de rapport : <sql>SELECT * FROM ma_table WHERE mon_champ='$maVariable'</sql>
Exemple de rapport après remplacement des variables : <sql>SELECT * FROM ma_table WHERE mon_champ='1'</sql> <sql>SELECT * FROM ma_table WHERE mon_champ='test'</sql>
Champ de saisie
Champ de type "dbObject"
Dans le formulaire, le champs de type "dbObject" est représenté sous forme de liste déroulante où est proposé comme choix :
- "Pas de filtre" comme premier choix
- La liste des différents "objets" comme autre choix. Par exemple, un type "dbObject::Person" va donner la liste des utilisateurs
Une variable associé à ce type de champ recevra comme valeur possible :
- Lorsque "Pas de filtre" est sélectionné, le caractère : -
- Lorsqu'une valeur est sélectionnée, un id sous forme de nombre
Exemple de prise en compte de la variable au niveau du rapport : Liste des utilisateurs actifs possédant le profil "$profileId" <sql>SELECT person.* FROM person LEFT JOIN profile ON person.profile & profile.id WHERE profile.id='$profileId'
AND activated=1</sql>
Exemple de prise en compte de la variable au niveau du rapport : Liste des utilisateurs actifs avec ou non, un filtre sur le profil <sql>SELECT * FROM person LEFT JOIN profile ON person.profile & profile.id WHERE ( profile.id='$profileId' OR '-'='$profileId' )</sql>
Champ de type "dbObjectMulti"
Dans le formulaire, le champ de type "dbObjectMulti" est représenté sous forme de liste de cases à cocher où est proposé comme choix :
- La liste des différents "objets" comme autre choix. Par exemple, un type "dbObjectMulti::Profile" va donner la liste des profils
Une variable associé à ce type de champ recevra comme valeur possible :
- Lorsque rien n'est coché, la chaîne : '-'. Cela est considéré comme "Pas de filtre".
- Lorsqu'une valeur est cochée, un id sous forme de nombre
- Lorsque plusieurs valeurs sont cochées, plusieurs id sous forme de chaîne suivante : 1,2,3
Exemple de prise en compte de la variable au niveau du rapport : Liste des utilisateurs actifs possédant le profil "$profileId" <sql>SELECT person.* FROM person LEFT JOIN profile ON person.profile & profile.id WHERE profile.id IN ($profileId)
AND activated=1</sql>
Exemple de prise en compte de la variable au niveau du rapport : Liste des utilisateurs actifs avec ou non, un filtre sur le profil <sql>SELECT * FROM person LEFT JOIN profile ON person.profile & profile.id WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )</sql>