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 23/11/2011, 10h35   #1
Invité régulier
 
Inscription : février 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 10
Points : 7
Points : 7
Par défaut [BIRT Designer 3.7.0] Afficher les libellés d'un paramètre multivalué

Bonjour,

Après avoir fouillé toute la FAQ, le forum et autre, google..., je n'ai pas trouvé mon bonheur, j'ouvre donc ce sujet (même s'il a déjà était évoqué par le passé => ici .

J'ai un rapport contenant des paramètres multivalués, je souhaite afficher les libellés des valeurs sélectionnées dans mon rapport.

J'ai trouvé cet exemple sur birt-exchange ==> http://www.birt-exchange.org/org/dev...ext-in-report/)

J'ai constaté que le rapport d'exemple fonctionne bien, mais lorsque j'essaye d'appliquer ce principe à mon rapport, ça ne fonctionne pas. Il semble que le code placé dans le "OnFetch" de mon dataset ne s'exécute pas.

2 questions:
- Connaissez-vous une autre méthode pour obtenir le résultat souhaité ?
- Y a-t-il des problèmes connus sur le OnFetch d'un dataset ?

Avez-vous quelque chose à me proposer ?
Pauloux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 12h58   #2
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
Salut,

tout d'abord, je suppose que tu l'as déjà fait mais on sait jamais, il ne faut pas oublier l'initialisation de la var globale dans le "initialize" du rapport.

Pour le reste c'est un problème de dépendance entre le paramètre et son dataset. Ce n'est pas le onFetch qui n'est pas exécuté, c'est carrément le dataset: Ton dataset s'exécute une fois avant la sélection des paramètres (c'est à dire lorsque le paramètre multi n'est pas encore initialisé), et n'est ensuite plus invoqué dans le reste du rapport, le onFetch ne peut donc plus s'exécuter avec le paramètre initialisé.

La solution rapide: drag & drop du dataset avant l'affichage du paramètre multi-valué dans ton rapport, puis visibility->hide. Cette table cachée forcera Birt à ré-ouvrir le dataset et donc à évaluer à nouveau le onFetch.

La solution élégante: aucune idée, je ne sais pas comment l'auteur de l'exemple a fait pour que son dataset soit réévalué puisque il ne l'utilise apparemment plus dans son rapport. Je lui ai d'ailleurs posé la question, je posterai ici quand j'aurai la réponse.

A+
donino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 15h05   #3
Invité régulier
 
Inscription : février 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 10
Points : 7
Points : 7
D'abord merci pour ta réponse. J'ai essayé la solution "moche" et ça fonctionne...effectivement (j'ai désormais une idée plus claire du fonctionnement de l'évènement onFetch !).

Pour le moment je vais me contenter de ça et puis on verra ce que nous dit l'auteur du rapport!

C'est la seule solution que j'ai eu l'occasion de trouver sur le net.

N'y a-t-il pas une solution qui consisterait à "requêter" via du code le dataset en question pour obtenir les libellés => Je n'ai pas trouvé la fonction qui permettrait de le faire.

Ca donnerai un truc du style :

Code :
1
2
3
Pour tout les ID de mon paramètre
  ListeLibelles = ListeLibelles + dataSetParam.Valeur/data;
Fin Pour
En fait la question, c'est existe-t-il l'équivalent de l'objet recordset qu'on retrouve en VB / .NET et autre...? Si ça existe et que ca peut-être appeler depuis nimporte quel endroit du rapport alors on peut y arriver...
Pauloux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h37   #4
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
Entre temps j'ai trouvé comment il a fait: il faut cliquer sur le "dynamic text" qui affiche les libellés du paramètre multi-valué, puis l'onglet "binding". Sélectionner le dataset correspondant et c'est ok: cela crée une dépendance et le dataset sera du coup à nouveau évalué juste avant l'affichage des libellés.
Tu peux donc enlever cette vilaine table cachée et classer le tout en "résolu"
donino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 08h07   #5
Invité régulier
 
Inscription : février 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 10
Points : 7
Points : 7
Effectivement ca marche Nickel ! Merci encore pour ton aide.

Pour le coup la notion de Binding peut-être également intéressante à creuser...les pro de birt il ne faut pas hésite à ajouter ces petits sujets dans la FAQ
Pauloux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 11h17   #6
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
Salut,

l'auteur de l'exemple a répondu et confirme donc que c'est bien le binding qui résoud le problème, même si au final on ne lie notre texte dynamique à aucun champs. Cependant en intégrant cette fonctionnalité à certains de mes rapports je me suis aperçu que même si ça fonctionne bien, ça log des tonnes de messages d'erreurs . C'est cette ci fois dû à la première ouverture du dataset, qui utilise une variable qui n'est pas encore définie . Si tu repasses dans le coin je conseille donc pour résoudre ce souci de changer le code du onFetch ainsi, en reprenant l'exemple:

changer ce onFetch:
Code :
1
2
3
4
 
if (custList.indexOf(row["CUSTOMERNUMBER"].toString()) != null){
custList = custList.replace(row["CUSTOMERNUMBER"].toString(),row["CUSTOMERNAME"]);
}
en celui ci:

Code :
1
2
3
4
 
if (typeof(custList ) != 'undefined') && custList.indexOf(row["CUSTOMERNUMBER"].toString()) != null){
custList = custList.replace(row["CUSTOMERNUMBER"].toString(),row["CUSTOMERNAME"]);
}
donino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 14h14   #7
Invité régulier
 
Inscription : février 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 10
Points : 7
Points : 7
OK merci pour l'info je vais modifier le code.

Par contre, tu les vois où les messages dans les logs ?...parce que moi je n'ai rien vu
Pauloux 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 14h33.


 
 
 
 
Partenaires

Hébergement Web