Developpez.com - Delphi
X

Choisissez d'abord la catégorieensuite la rubrique :

Utiliser les outils d'aide à la décision

Le 12/02/2003

Par Jean-Luc Mellet (Alphomega)

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 ��ss��le ! 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

    Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -