Rotation des champs en reports (Oracle)

Salim Chelabi

Comment faire la rotation des champs en reports ?

- Titre : Rotation des champs en reports (Oracle)

- Auteur : Salim Chelabi

- Parution : 30 juin 2007

- Licence : Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. Problématique

- II. Solution

- III. Exemple

- III-A. La requête

- III-B. Le modèle de présentation

- III-C. Le résultat

- IV. Bonus

- IV-A. La colonne de réserve : cp_n_ligne

- IV-B. La colonne récapitulative : cs_somme_ligne

- IV-C. Modèle de présentation

- IV-D. Le résultat

- V. Le rapport de test

- VI. Idée originale et remerciements

I - Problématique

Lorsque on veut faire la rotation d'un champ en reports, cette dernière provoque l'erreur suivante
Error: REP 3103
Text: Only text and graphical boilerplates can be rotated.

II - Solution

Vu que reports autorise la rotation d'un texte, pour résoudre ce problème, on utilise un texte et on met dans ce dernier la référence du champ &nom_champs (nom_champ : les champs qui figurent dans la requête par exemple : &dname, &deptno… ) qu'on souhaite afficher en vertical.Voici la méthode à suivre :

2.1- Création d'un texte.
2.2- Mettre dans le texte la référence du champ &nom_champ qu'on souhaite afficher en vertical.
2.3- Faire la rotation du texte.

Rappel: La référence lexicale (&) peut être utilisée pour changer la police d'un mot dans une phrase
Exemple : ch1 apparaît avec une fonte, le 2ème ch2 apparaît avec une autre fonte.
Sur le modèle de présentation, on rajoute un texte avec l'outil texte (A) et on met dedans : &ch1 &ch2

III - Exemple

On crée un rapport qui affiche pour chaque département ses employés. Le département est affiché verticalement.

III-A - La requête

SELECT   empno, ename, sal, comm,
DECODE (dept.deptno,
NULL, NULL,
dept.deptno || ' - ' || dname
) dname
FROM emp, dept
WHERE emp.deptno = dept.deptno
ORDER BY dept.deptno

III-B - Le modèle de présentation

3-2. Modèle de présentation

III-C - Le résultat

3-3. Résultat

IV - Bonus

Comment colorer les lignes paires dans une liste des employés?
Voici la méthode à suivre :

5.Modéle de présentation

IV-A - La colonne de réserve : cp_n_ligne

Elle sert à incrémenter le numéro de la ligne.

5-1. Les propriétés de la colonne de réserve

IV-B - La colonne récapitulative : cs_somme_ligne

Elle sert à déterminer le numéro de la ligne courante.

5-2. Les propriétés de la colonne récapitulative

IV-C - Modèle de présentation

5-3.Modéle de présentation

Mettre dans la partie PLSQL de l'encadrement itératif R_emp (apparaît en rouge dans la figure 5-3) qui prend sa source de g_empno,
le code suivant :

FUNCTION r_empformattrigger
RETURN BOOLEAN

IS
BEGIN
IF MOD (:cs_somme_ligne, 2) = 0
THEN
srw.set_foreground_fill_color ('GRAY28');
srw.set_fill_pattern ('solid');
END IF;
RETURN (TRUE);
END;

IV-D - Le résultat

5-4.Résultat

V - Le rapport de test

Un fichier zip contient le rapport de test DEPT_VERTICAL.RDF.
DEPT_VERTICAL.zip

VI - Idée originale et remerciements

L'idée originale de la rotation des champs provient du site metalink
Lien Metalink
Chaleureux remerciements à M. Sheik Yerbouti, Mlle Denise Samkocwa, Developpez.com et l'équipe SGBD