Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Reports
Reports Forum d'entraide sur Oracle Reports
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 30/01/2007, 16h13   #1
Invité de passage
 
Inscription : décembre 2004
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 31
Points : 4
Points : 4
Envoyer un message via MSN à lifeisgood Envoyer un message via Yahoo à lifeisgood
Par défaut [reports] comment créer une requete dynamiquement

slt.
j'ai un probleme avec reports 9i.
je voudaris créer une requete manuellement à l'execution.
je vais simplifier:
j'ai un parametre utilisateur p_trimestre={1,2,3,4}
j'ai une table ds ma BDD
SITUATION
les colonnes de la table sont :
situation_trim1 varchar2
situation_trim2 varchar2
situation_trim3 varchar2
situation_trim4 varchar2

je voudrais afficher selon p_trimestre la colonne concernée.
svp je suis vraiement à cour d'idée .
aidez moi
lifeisgood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 16h38   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Selon p_trimestre, mais votre paramètre contient les 4 {1,2,3,4}

S'il n'en contenait qu'un, vous pourriez vous en sortir avec un DECODE()
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 17h09   #3
Invité de passage
 
Inscription : décembre 2004
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 31
Points : 4
Points : 4
Envoyer un message via MSN à lifeisgood Envoyer un message via Yahoo à lifeisgood
je voulais dire que p_trimestre peut avoir quatres valeurs 1 ou 2 ou 3 ou 4

je deverais avoir :
if p_trimestre = 1 then (curseur1)
if p_trimestre = 2 then (curseur2)
if p_trimestre = 3 then (curseur3)
if p_trimestre = 4 then (curseur4)

avec curseuri = select mes_données from ma_table
where sit_trim1 = 'ma_valeur'


pour tt i ds 1..4
lifeisgood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 18h10   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Tu crées un Paramètre P_WHERE VARCHAR2 (1000)
Tu l'initialises dans le trigger AFTER_PARAMETER_REPORT (syntaxe pas sure)
Code :
1
2
3
4
5
6
IF :parameter.p_trimestre = 1
THEN
:Parameter.p_where := ' sit_trim1 = 1';
ELSE
:Parameter.p_where := ' sit_trim2 = 1';
END IF;
Ton query devient

Code :
1
2
3
SELECT col1....
FROM MATABLE
WHERE &P_WHERE
PS : Je crois que pour que le query compile, il faut quelque chose dans P_WHERE (mets 1=1 par defaut dans ce cas)
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 12h15   #5
Invité de passage
 
Inscription : décembre 2004
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 31
Points : 4
Points : 4
Envoyer un message via MSN à lifeisgood Envoyer un message via Yahoo à lifeisgood
Merci bien pour l'aide.
cette idée est tré bien .
j'ai utilisé le décode que tu ma conseillé et ça marche lui aussi
voici mon code:
Code :
1
2
3
4
5
6
7
8
9
 
SELECT  mes_donnees 
FROM ma_table
WHERE mes_conditions
AND     decode (:p_trimestre,
        '1', ma_table.sit_trim1,
        '2',  ma_table.sit_trim2,
        '3',  ma_table.sit_trim3,
        '4' , ma_table.sit_trim4)  IN ('J', 'C', 'E', '')
et là aussi ça marche à merveille.
lifeisgood 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 01h24.


 
 
 
 
Partenaires

Hébergement Web