Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
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 17/01/2008, 09h31   #1
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
Par défaut [2.2.1] Paramètres de rapport

Bonjour,

J'ai un rapport comprenant 2 paramètres à choix multiple. Dans ce même rapport, j'ai créer de listes afin d'itérer sur les valeurs des 2 paramètres.

Voici un exemple de valeurs sélectionnées
Code :
1
2
3
 
Param1 = [s1,s3]
Param2 = [p1,p2,p8,p15]
et voici l'affichage
Code :
1
2
3
4
5
6
7
8
9
10
11
 
s1
  p1
  p2
  p8
  p15
s3
  p1
  p2
  p8
  p15
J'ai créer des signets pour chacune de ces valeurs. Par contre, je souhaiterais ne pas afficher de signets d'un paramètre si il contient une seule valeur. Par exemple, si l'utilisateur choisi uniquement "s1" comme valeur de Param1 alors il faudra seulement afficher dans les signets :
Mon problème est que je n'arrive pas à accéder aux nombre de valeurs contenues dans un paramètre. Je voudrais par exemple via une instruction comme celle-ci :
Code :
params["Param1"].length
avoir comme réponse 2, et pour l'instruction :

Code :
params["Param1"].length
avoir comme réponse 4.

Savez-vous par quelle propriété ou quelle méthode peut-on accéder à la taille d'un paramètre à choix multiple ?
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2008, 21h33   #2
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Bonjour,

Tu utilise tes paramètres dans une requête SQL? si oui comment fais tu pour utiliser des paramètres à choix multiples avec BIRT, puisque que cette fonctionnalité n'est pas présente avec l'outils ...

Sinon pour répondre à ta question il te suffit d'utiliser la méthode exec() et de faire :
Code :
1
2
 
param["ton_parametre"].valueOf().exec(",").length
Citation:
param["ton_parametre"].valueOf()
Dois renvoyer la liste des valeurs présente dans ton paramètre.
Citation:
exec(",")
Un tableau de String vis à vis d'une expression régulière passée en argument
Citation:
length
La longueur de ton tableau

Attention, je n'ai rien testé à toi de voir alors bonne chance
lazarel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 09h23   #3
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
Pour les paramètres :

Code :
1
2
3
 
Type d'affichage : liste déroulante
Liste de valeurs : cochez "allow multiple values"
L'utilisateur peut ainsi choisir plusieurs valeurs. Ces choix me permettent de générer n instances du rapport grâce au composant List. En effet, je crée une liste par paramètre de rapport. Je n'utilise donc pas ces paramètres directement dans les requêtes du type :

Code :
1
2
 
select * from dual where field in (?)
L'accesseur valueOf() ne semble pas fonctionner. Une piste : les paramètres à choix multiples sont des params et non des param (sans s).
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 11h08   #4
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Re,

Sais tu l'objet que renvoie params ?
lazarel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 13h24   #5
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
Citation:
Birt provides four kinds of parameters:
  • simple (scalar) data value
  • query condition
  • list of simples values
  • table (list of structures)

List Parameter Element (XML Element Name : list-parameter)
Defines a parameter that can accept multiple entries.

Table Parameter Element (XML Element Name : table-parameter)
Defines a parameter that is a list of tuples.

Je dirais qu'il s'agit de paramètres du type : list parameter
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 13h32   #6
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
Et voici la solution :

Code :
1
2
 
params["mon_parameter"].value.length
Si cela peut aider quelqu'un ...
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 13h56   #7
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Et bien bravo

Mais dis nous comment fais tu pour accéder aux données et pour itérer sur les éléments de ton paramètres ?
lazarel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 15h34   #8
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
J'utilise la version 2.2.1 de BIRT.

Tu crées un paramètre d'état (= report parameter) en spécifiant le type d'affichage à "Liste déroulante" (désolé, j'ai une version francisée ) et tu sélectionne la case à cocher "Allow multiple values" (cf. pièce jointe).

Perso, j'ai crée des paramètres ayant des valeurs dynamiques. Pour chaque paramètre j'ai donc un dataset.

Voici un exemple :
Code :
1
2
3
 
Paramètre : rpt_par-annee
Requête : dse_annee (SELECT annee FROM dual)
Ensuite, tu ajoutes un composant "List" pour chaque paramètre dans l'ordre le plus logique.

Par exemple, pour itérer sur le paramètre "Année", j'ai crée une liste basé sur le dataset "dse_annee". J'ai également filtré les résultats de cette requête via l'onglet "filters" du composant liste :
Code :
1
2
3
4
 
champ du filtre : annee
critère du filtre : in
valeur du filte : params["rpt_par-annee"]
Ainsi, ma liste itère uniquement sur les valeurs sélectionnées par l'utilisateur.
Images attachées
Type de fichier : jpg exemple.JPG (59,0 Ko, 25 affichages)
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 22h01   #9
Membre Expert
 
Avatar de lazarel
 
Homme
Consultant informatique
Inscription : mai 2007
Messages : 893
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2007
Messages : 893
Points : 1 360
Points : 1 360
Ok merci pour l'info
lazarel 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 12h31.


 
 
 
 
Partenaires

Hébergement Web