Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2011, 14h11   #1
Invité de passage
 
Inscription : octobre 2011
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 34
Points : 4
Points : 4
Par défaut DECLARE ODSOUT: Cellules décalées

Bonjour,

J'utilise ODSOUT pour ma sortie tableau, tout va bien sauf que dans mon tableau j'ai les cellules des "Headers" décalées par rapport au reste des lignes et voila mon code :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
DATA _NULL_  ;
        SET table03 END = fin;
        IF _N_ = 1 THEN DO ;
            DECLARE ODSOUT rapport () ;
            rapport.TABLE_START() ;
            rapport.ROW_START(TYPE:"HEADING") ;
                rapport.FORMAT_CELL(TEXT:"Niveau de gravité",ROW_SPAN:3,OVERRIDES:"JUST=LEFT") ;
                rapport.FORMAT_CELL(TEXT:"Total",ROW_SPAN:2) ;
                rapport.FORMAT_CELL(TEXT:"Non graves",COLUMN_SPAN:4) ;
                rapport.FORMAT_CELL(TEXT:"Graves",COLUMN_SPAN:5) ;
            rapport.ROW_END() ;
            rapport.ROW_START() ;
                rapport.FORMAT_CELL(TEXT:"G1",COLUMN_SPAN:2) ;
                rapport.FORMAT_CELL(TEXT:"G2",COLUMN_SPAN:2) ;
                rapport.FORMAT_CELL(TEXT:"G3",COLUMN_SPAN:2) ;
                rapport.FORMAT_CELL(TEXT:"G4",COLUMN_SPAN:2) ;
                rapport.FORMAT_CELL(TEXT:"G5") ;
            rapport.ROW_END();
            rapport.ROW_START() ;
                *rapport.FORMAT_CELL(TEXT:"") ;
                rapport.FORMAT_CELL(TEXT:"n",OVERRIDES:"FONTWEIGHT=BOLD  ") ;
                rapport.FORMAT_CELL(TEXT:"n",OVERRIDES:"FONTWEIGHT=BOLD") ;
                rapport.FORMAT_CELL(TEXT:"%",OVERRIDES:"FONTWEIGHT=BOLD") ;
                rapport.FORMAT_CELL(TEXT:"n",OVERRIDES:"FONTWEIGHT=BOLD ") ;
                rapport.FORMAT_CELL(TEXT:"%",OVERRIDES:"FONTWEIGHT=BOLD ") ;
                rapport.FORMAT_CELL(TEXT:"n",OVERRIDES:"FONTWEIGHT=BOLD ") ;
                rapport.FORMAT_CELL(TEXT:"%",OVERRIDES:"FONTWEIGHT=BOLD ") ;
                rapport.FORMAT_CELL(TEXT:"n",OVERRIDES:"FONTWEIGHT=BOLD ") ;
                rapport.FORMAT_CELL(TEXT:"%",OVERRIDES:"FONTWEIGHT=BOLD ") ;
                rapport.FORMAT_CELL(TEXT:"n",OVERRIDES:"FONTWEIGHT=BOLD ") ;
            rapport.ROW_END();
 
        END ;
            rapport.ROW_START() ;
                rapport.FORMAT_CELL(TEXT:put(nat,$effetinc.),OVERRIDES:"JUST=LEFT FONTWEIGHT=MEDIUM CELLWIDTH=10cm") ;
                rapport.FORMAT_CELL(TEXT:frequency5,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:frequency1,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:percent11,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:frequency2,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:percent21,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:frequency3,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:percent31,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:frequency4,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:percent41,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
                rapport.FORMAT_CELL(TEXT:freqG5,OVERRIDES:"FONTWEIGHT=MEDIUM") ;
            rapport.ROW_END();
        IF fin THEN rapport.TABLE_END() ;
    RUN;
Et le résultat en pièce jointe et MErciii
Fichiers attachés
Type de fichier : doc T3t.doc (12,5 Ko, 9 affichages)
kmel53 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 24/12/2011, 08h23   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Bonjour.
Je n'arrive pas à reproduire ton décalage de cellules, mais je me souviens d'avoir déjà eu des soucis avec cette option TYPE dans ROW_START. Selon la version de SAS, elle fonctionne plus ou moins bien.
2 évolutions seraient à tester dans ton code : soit en indiquant, à chaque ROW_START, le type (HEADING ou BODY) pour distinguer l'en-tête et le corps du tableau de manière bien explicite ; soit carrément laisser tomber cet attribut TYPE, et utiliser les méthodes HEAD_START, HEAD_END, BODY_START et BODY_END.
Variante 1 :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ODS LISTING CLOSE ;
ODS RTF FILE="c:\temp\test v2.doc" ;
DATA _NULL_  ;
		SET sashelp.class END = fin;
		IF _N_ = 1 THEN DO ;
			DECLARE ODSOUT rapport () ;
			rapport.TABLE_START() ;
			rapport.ROW_START(TYPE:"HEADING") ;
				rapport.FORMAT_CELL(TEXT:"Prénom",ROW_SPAN:2,OVERRIDES:"JUST=LEFT") ;
				rapport.FORMAT_CELL(TEXT:"Caractéristiques", COLUMN_SPAN:2) ;
			rapport.ROW_END() ;
			rapport.ROW_START(TYPE:"HEADING") ;
				rapport.FORMAT_CELL(TEXT:"Age") ;
				rapport.FORMAT_CELL(TEXT:"Taille") ;
			rapport.ROW_END();
		END ;
			rapport.ROW_START(TYPE:"BODY") ;
				rapport.FORMAT_CELL(TEXT:name,OVERRIDES:"JUST=LEFT FONTWEIGHT=MEDIUM CELLWIDTH=10cm") ;
				rapport.FORMAT_CELL(TEXT:PUT(age,2.),OVERRIDES:"FONTWEIGHT=MEDIUM") ;
				rapport.FORMAT_CELL(TEXT:PUT(height,3.),OVERRIDES:"FONTWEIGHT=MEDIUM") ;
			rapport.ROW_END();
		IF fin THEN rapport.TABLE_END() ;
	RUN;
ODS RTF CLOSE ;
ODS LISTING ;
Variante 2 :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ODS LISTING CLOSE ;
ODS RTF FILE="c:\temp\test v3.doc" ;
DATA _NULL_  ;
		SET sashelp.class END = fin;
		IF _N_ = 1 THEN DO ;
			DECLARE ODSOUT rapport () ;
			rapport.TABLE_START() ;
			rapport.HEAD_START() ;
			rapport.ROW_START() ;
				rapport.FORMAT_CELL(TEXT:"Prénom",ROW_SPAN:2,OVERRIDES:"JUST=LEFT") ;
				rapport.FORMAT_CELL(TEXT:"Caractéristiques", COLUMN_SPAN:2) ;
			rapport.ROW_END() ;
			rapport.ROW_START() ;
				rapport.FORMAT_CELL(TEXT:"Age") ;
				rapport.FORMAT_CELL(TEXT:"Taille") ;
			rapport.ROW_END();
			rapport.HEAD_END() ;
			rapport.BODY_START() ;
		END ;
			rapport.ROW_START() ;
				rapport.FORMAT_CELL(TEXT:name,OVERRIDES:"JUST=LEFT FONTWEIGHT=MEDIUM CELLWIDTH=10cm") ;
				rapport.FORMAT_CELL(TEXT:PUT(age,2.),OVERRIDES:"FONTWEIGHT=MEDIUM") ;
				rapport.FORMAT_CELL(TEXT:PUT(height,3.),OVERRIDES:"FONTWEIGHT=MEDIUM") ;
			rapport.ROW_END();
		IF fin THEN DO ;
			rapport.BODY_END() ;
			rapport.TABLE_END() ;
		END ;
	RUN;
ODS RTF CLOSE ;
ODS LISTING ;
Bilan de mes essais :
--> les 2 solutions fonctionnent bien en 9.1.3
--> seule la solution 2 donne un tableau correct en 9.2 et en 9.3
--> ton programme d'origine n'a pas de cellules décalées mais un tableau tout sur fond gris (style en-tête) en 9.2 et 9.3. Donc je suppose que c'est la manifestation du même problème que ton décalage de cellules.

Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h47.


 
 
 
 
Partenaires

Hébergement Web