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 18/01/2011, 11h16   #1
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Par défaut ODS et COMPUTE

Bonjour à tous,
Je me permets de poster ce message parce que je n'ai pas trouvé mon bonheur en faisant une recherche rapide sur "compute".

Mon problème est tout simple (je pense) mais je n'ai pas encore assez d'expérience pour en arriver à bout.

Je vous expose mon problème.

Voilà, à partir de données d'une base ORACLE, je dois formatter mon tableau en fonction des données sorties.
Pour cela j'utilise la fonction compute. Là je me dis pas de problème, ça devrait passer sans problème. Eh bien, shame on me, ce la ne fonctionne pas.

En gros, ma colonne doit se mettre en gras lorsque ma colonne incontournale est à 'Y'. Mais rien ne se passe. J'ai bien mis mon Y entre quote et doublequote mais rien n'y fait le problème persiste.

Code :
1
2
3
4
5
6
7
8
9
proc report DATA=mes_data nowd  style(report)={just=LEFT BORDERwidth=1pt frame=box rules=groups}
							 style(header)={CELLWIDTH=7cm BACKGROUND=#FFE89F};
    COLUMN ("Colonne 1" colonne) incontournable;
	define colonne / "" display  style(COLUMN) = {CELLWIDTH=19cm JUST=LEFT vjust=center};
	define incontournable / display noprint;
	compute colonne;
		IF incontournable = 'Y' then call define(_COL_,'STYLE','STYLE=[FONT_WEIGHT=bold]');
	endcomp;
run;
Quelqu'un aurait-il une idée à me soumettre?

Je vous remercie d'avance
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 11h24   #2
Membre confirmé
 
Inscription : janvier 2010
Messages : 185
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 185
Points : 250
Points : 250
Salut,
2 modifications de ton code pour aboutir à ce que tu recherches :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DATA mes_data;
input incontournable $ colonne $;
cards;
Y ligne1
N ligne2
Y ligne3
;
run;
 
proc report DATA=mes_data nowd  style(report)={just=LEFT BORDERwidth=1pt frame=box rules=groups}
							 style(header)={CELLWIDTH=7cm BACKGROUND=#FFE89F};
    COLUMN ("Colonne 1" colonne) incontournable;
	define colonne / "" display  style(COLUMN) = {CELLWIDTH=19cm JUST=LEFT vjust=center};
	define incontournable / display noprint;
 
	/* compute de incontournable plutot que colonne + define de colonne */
	compute incontournable;
		IF incontournable = 'Y' then call define('colonne','STYLE','STYLE=[FONT_WEIGHT=bold]');
	endcomp;
run;
sasadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 11h48   #3
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Merci beaucoup sasadm.
Réponse rapide pour une solution efficace

A bientôt
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 12h08   #4
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 823
Points : 2 823
Et le pourquoi de la solution proposée par SASADM : dans un bloc COMPUTE, on ne connaît que les colonnes situées physiquement plus à GAUCHE (selon l'ordre défini dans COLUMNS) que celle que l'on compute.
Donc COMPUTE colonne et un test sur une variable qui se trouve à sa droite ne peut pas fonctionner correctement (SAS évalue les colonnes plus à droite à une valeur manquante).
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 18/01/2011, 14h03   #5
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Merci pour la petite précision Olivier
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 14h16   #6
Membre confirmé
 
Inscription : janvier 2010
Messages : 185
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 185
Points : 250
Points : 250
Merci Olivier.
J'apprends quelque chose.
sasadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 14h19   #7
Membre confirmé
 
Inscription : janvier 2010
Messages : 185
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 185
Points : 250
Points : 250
Donc en application de ce principe, il suffisait de faire commencer la liste des colonnes par la variable incontournable :

Code :
1
2
3
4
5
6
7
8
9
10
 
proc report DATA=mes_data nowd  style(report)={just=LEFT BORDERwidth=1pt frame=box rules=groups}
							 style(header)={CELLWIDTH=7cm BACKGROUND=#FFE89F};
    COLUMN incontournable ("Colonne 1" colonne) ;
	define colonne / "" display  style(COLUMN) = {CELLWIDTH=19cm JUST=LEFT vjust=center};
	define incontournable / display noprint;
	compute colonne;
		IF incontournable = 'Y' then call define(_COL_,'STYLE','STYLE=[FONT_WEIGHT=bold]');
	endcomp;
run;
sasadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 16h24   #8
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
C'est bien sasadm.
J'ai utilisé la dernière solution et ça marche tout aussi bien.

Merci encore !
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h34.


 
 
 
 
Partenaires

Hébergement Web