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 29/02/2008, 15h23   #1
Invité de passage
 
Inscription : février 2008
Messages : 11
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : février 2008
Messages : 11
Points : 4
Points : 4
Par défaut [2.2.1.1][Design]Multi-tableaux sur une seule requête

Bonjour,

Ancien développeur mainframe, je suis actuellement en cours de reconversion J2EE et commence par un projet avec BIRT.

Dans ce cadre, je dois réaliser un état comportant une table apparaissant sur une page en trois partie , chaque 1/3 affichant la suite du dataset (cf pièce jointe).

Je planche actuellement sur une solution créant 3 tables, chacune lisant 1 enregistrement sur 3 de mon dataset (où 3 datasets lisant chacun 1 enregistrement sur 3 de ma BD). Cependant, je me demandais s'il n'existait pas une solution plus simple, notamment une option prévue par BIRT.

Merci pour votre aide.
Fichiers attachés
Type de fichier : doc exemple.doc (59,0 Ko, 11 affichages)
2ni38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 11h32   #2
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bonjour,

Je crois que cela revient exactement au problème suivant : http://www.developpez.net/forums/sho...d.php?t=176415

Il n'y a donc pas de solution native dans BIRT mais une petite bidouille résout le problème assez simplement. C'est un peu embêtant quand même...

PS pour la bidouille : Sans créer une colonne ID, il y a automatiquement une colonne rownum ou quelquechose comme ca dans BIRT.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 16h22   #3
Invité de passage
 
Inscription : février 2008
Messages : 11
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : février 2008
Messages : 11
Points : 4
Points : 4
J'avais effectivement vu cette discussion et y avait également pensé.

Mais mon problème est légèrement différent puisque dans mon cas, le deuxième enregistrement de la ligne (soit le premier enregistrement du deuxième tableau) n'est pas le suivant du premier enregistrement, mais du dernier enregistrement du premier tableau de la page .

Hors je ne sais pas comment récupéré ce dernier.

Aurais tu une astuce la-dessus ?

En tout cas merci pour ta réponse précédente .
2ni38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 22h33   #4
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Ah, je vois

Total.count() permet de compter le nombre de lignes du DataSet.

A partir de ça, tu peux regarder si tu es dans le premier, deuxième ou troisième tiers.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 09h43   #5
Invité de passage
 
Inscription : février 2008
Messages : 11
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : février 2008
Messages : 11
Points : 4
Points : 4
Malheureusement, la solution que tu me proposes suppose que l'enregistrement précédent le 1er enregistrement du tableau 2 sur la 1ere page soit le dernier enregistrement du tableau 1 sur la dernière page, alors que dans mon exemple, il s'agit du dernier enregistrement du tableau 1 de la première page.
Le tableau 1 de la seconde page commence alors par l'enregistrement suivant le dernier enregistrement du dernier tableau de la première page .
Pour que ce soit plus clair, j'ai remis à jour mon exemple en y ajoutant une page.

Cependant, j'ai tout de même résolu mon problème grâce notamment aux idées que tu m'a fourni .
Voici donc la solution pour ceux qui serait intéressés :

"1 - Dans chacune des tables (3 dans mon exemple sur le même dataset), déclarez un Binding « No_Enreg » égal à : Total.runningCount()-1
Total.runningCount() donne le n° d'enregistrement dans le dataset (merci BiM) et la soustraction permet de supprimer un problème liés aux intervales.

2 - Ajoutez dans ces mêmes tables un group sur la nouvelle donnée « No_Enreg » en indiquant un interval correspondant au nombre d'enregistrements devant figurer dans chaque page (39 dans mon cas) et un Page Break After à "Always".

3 - Dans chacune de ces tables, déclarez un Binding « No_Enreg_Page » égal à : No_Enreg%39
Ce qui correspond à :
("N° d'enregistrement dans le dataset" - 1) Modulo "nb d'enreg dans la page"
Cette formule permet d'obtenir le numéro d'enregistrement dans la page.

4 - Pour chaque table, sélectionnez l'enregistrement détail, allez sur les properties , puis sur l'onglet Visibility. Cochez "Hide Element" et indiquez dans Expression les N° d’enregistrement ne devant pas être affichez. Dans mons cas j'ai :

Enreg détail Tableau 1 (Le N° d’enreg commence à 0 on cache donc à partir du 13ème enregistrement du dataset) :
row["No_Enreg_Page"] >= 13

Enreg détail Tableau 2 (On cache les enregistrements 1 à 12 et à partir de 26) :
row["No_Enreg_Page"] < 13 || row["No_Enreg_Page"] >= 26

Enreg détail Tableau 3 (On cache les enregistrements 0 à 25):
row["No_Enreg_Page"] < 26


Et voilà, encore merci à BiM grâce à qui j’ai pu trouver la solution.
Fichiers attachés
Type de fichier : doc exemple.doc (101,0 Ko, 3 affichages)
2ni38 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 08h24.


 
 
 
 
Partenaires

Hébergement Web