La version Entreprise de Delphi propose dans sa palette d'outils les composants d'aide à
la décision. Vous allez voir aujourd'hui que cet outil très pratique méritait bien une
présentation.
Aide à la décision
En entreprise, on a toujours besoin de trier, comparer, étudier des données selon certains
critères. Une bonne gestion impose ce travail parfois fastidieux. Prenons le cas d'une petite
société de 4 employés. Chaque employé de l'entreprise gère ses propres envois de courrier.
Afin de connaître les dépenses de chacun en la matière, il faut trier les dépenses par employé
puis par type d'envoi et enfin calculer les sous-totaux et totaux détaillés. Le stockage de
ces éléments dans une base de données permet au programmeur d'extraire les informations voulues.
Mais, avec les outils courants, ce travail serait vite compliqué. Chaque requète (demande de
renseignement), obligerait à créer différentes vues de ces données. Pour nous faciliter le
travail, Borland nous propose les outils d'aide à la décision.
Exemple de données
Avant d'aller plus loin, créons quelques données exemples pour illustrer notre propos.
Dans une base de type standard (Paradox), nous allons créer deux tables, une pour les
employés, et l'autre pour les envois.
| Numéro |
Nom |
| 1 |
Mickey Mouse |
| 2 |
Donald Duck |
| 3 |
Pat Hibulaire |
| 4 |
Dingo |
| Numéro |
Client |
Montant |
Livraison |
| 1 |
1 |
250.00 F |
Rapide |
| 2 |
1 |
342.35 F |
Colissimo |
| 3 |
2 |
542.50 F |
Simple |
| 4 |
3 |
356.00 F |
Colissimo |
| 5 |
1 |
210.00 F |
Simple |
| 6 |
4 |
1234.25 F |
Express |
| 7 |
4 |
564.00 F |
Simple |
Comment connaître d'un seul coup d'oeil les dépenses de chacun pour chaque type d'envoi,
le total de tous les envois pour chaque employé, le total des expéditions, etc . ?
C'est là qu'interviennent TDecisionCube, TDecisionGrid, etc .
Les outils proposés
- DecisionCube est une interface permettant de formater l'affichage des données dans un DecisionGrid
- DecisionGrid présente les données structurées et permet la manipulation par l'utilisateur final
- DecisionQuery est un équivalent de TQuery, mais amélioré et proposant un éditeur de requète
- DecisionSource est un équivalent de TDatasource
- DecisionPivot permet la modification de la présentation des données
Rappel sur SQL
SQL est le langage de requète qui permet d'extraire les informations d'une base de données
selon certains critères de tri ou de sélection (entre autres). SQL inclut des fonctions de type
SUM ou COUNT qui permettent respectivement de calculer la somme ou le nombre de plusieurs lignes
en fonction d'un critère de regroupement.
Prenons un exemple avec nos tables définies précédemment.
SELECT Env.Livraison, Emp.Nom, SUM(Env.Montant) Total
FROM "Employes.db" Emp
INNER JOIN "Envois.db" Env
ON (Emp.Numéro = Env.Employe)
GROUP BY Env.Livraison, Emp.Nom
Le résultat de cette requète nous donnerait le résultat suivant:
| Livraison |
Nom |
Total |
| colissimo |
Pat Hibulaire |
356.00 f |
| colissimo |
Mickey Mouse |
342.35 f |
| express |
Dingo |
1254.25 f |
| rapide |
Mickey Mouse |
250.00 f |
| simple |
Dingo |
564.00 f |
| simple |
Mickey Mouse |
210.00 f |
| simple |
Donald Duck |
542.50 f |
Pas très visuel tout ça :-( !
Mise en pratique
Voici la même requète présentée avec les outils d'aide à la décision:
Sans une seule ligne de programme !
Mieux encore ! Vous pouvez voir à coté des en-têtes Nom et Livraison des petits ronds jaunes
avec un signe moins à l'intérieur. Un simple clic à cet emplacement permet d'ouvrir ou
de refermer les lignes ou colonnes détails. Voici 2 copies d'écran après la manipulation.


Tout cela en un un seul clic pour chaque vue ! Et vous remarquerez que le graphique s'adapte automatiquement
à la nouvelle présentation des données.
Encore plus fort ? Et bien oui췰Ŭc't ssle !
Vous pouvez déplacer avec la souris (toujours à l'execution) les en-têtes Nom et Livraison pour présenter les données à votre guise.
Voici un exemple !

Les étapes ?
Mon seul travail a été de construire la requète SQL, poser les différents composants sur ma fenètre de présentation,
et à relier les éléments entre eux par de simples propriétés.
Création d'un nouveau projet
On pose sur la feuille les 6 éléments différents de l'onglet Decision Cube de la palette de composants
Création de la requète dans la propriété SQL du TDecisionQuery
Définition des propriétés (simples liens entre les composants)
DecisionPivot1.DecisionSource := DecisionSource1;
DecisionGrid1.DecisionSource := DecisionSource1;
DecisionGraph1.DecisionSource := DecisionSource1;
DecisionCube1.Dataset := DecisionQuery1;
DecisionQuery1.Active := True;
C'est tout! Pas mal non ?
Et il existe une foule de paramétrages et possibilités qu'il serait trop long de détailler ici.
Mais j'espère que ce petit exposé vous aura donné l'envie d'en savoir plus.
Les heureux possesseurs des versions Pro/Entreprise de Delphi ne devrait manquer ça sous aucun prétexte.
Code source ici
|