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 30/07/2007, 11h45   #1
Invité régulier
 
Inscription : juillet 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 16
Points : 7
Points : 7
Par défaut [2.2.0] Requête générant plusieurs tableaux

Bonjour à tous,

je crée un nouveau data set qui prend en compte une procédure stockée.
Celle ci renvoie comme résultat plusieurs tableaux de données.
Malheureusement dans Preview result, Birt ne m'affiche que le premier tableau de données.
Est-il possible d'avoir plusieurs result set à partir d'une requête?

Merci de votre aide
Hanae est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 11h54   #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
Salut !

Je ne comprend pas bien ton problème.

Peux-tu poster le contenu de ta procédure ?
__________________
__~{@ 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 30/07/2007, 13h30   #3
Invité régulier
 
Inscription : juillet 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 16
Points : 7
Points : 7
salut BIM,

je ne peux pas poster la procédure stockée sur le forum car je travaille pour une entreprise et si je me fais choper, je risque de prendre cher...

En gros, cette procédure stockée va chercher des infos sur différentes tables et fais ensuite plein de Select différents, ce qui génère 12 result set car il y a 12 Select.Mais le preview result ne renvoie que le résultat du premier select. J'espère que j'ai été plus claire.

Merci de ton aide
Hanae est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 12h27   #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
Nous avons continué cette conversation en privé car la procédure contenait des informations confidentielles.

Je vais donc vous dévoiler comment le problème a été résolu (sans aller dans le détail). C'est du pur bidouillage mais c'est déjà pas mal :

Voici la forme de la procédure simplifiée (elle est devenue non identifiable ) :
Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE PROC EXEMPLE
AS
 
	SELECT champs1, champs2
	INTO #tmp
	FROM Table1
 
	DELETE #tmp WHERE champs1 like "yeah"
 
	UPDATE #tmp
	SET champs2="youhou" WHERE champs2="coucou"
 
	UPDATE #tmp
	SET champs1="muche" WHERE champs1 IN ("machin","bidule")
 
	SELECT champs1, nb=count(*)
	FROM #tmp
 
	SELECT champs2
	FROM #tmp

Le problème de cette procédure, c'est que tu as des SELECT (avec une clause INTO) et des modifications qui remplissent et modifient les tables temporaires et tu as d'autres SELECT sans les INTO qui sont probablement les données que tu veux récupérer.

Je pense à une éventuelle solution :
  1. Tu lances la première partie de ta procédure avant lancement de la génération du PDF/HTML/XLS ou autre (partie de remplissage/modification de ta procédure)
  2. Tu lances ensuite chaque requête de SELECT (sans INTO) dans chaque DataSet.
  3. S'il te reste une partie de ta procédure à faire après génération, tu la lances (suppression des tables temporaires par exemple.

En Java, ça te ferait un truc du genre :
Code Java :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
try {
    //Lancement de la première partie de la procédure
    //Lancement de la génération
}
catch (BirtException e) {
   System.out.println("Erreur BIRT");
   e.printStackTrace();
}
catch (SQLException e) {
   System.out.println("Erreur SQL");
   e.printStackTrace();
}
catch (Exception e) {
   System.out.println("Erreur autre");
   e.printStackTrace();
}
finally {
   //Eventuellement, dernière partie de la procédure (suppression des tables temporaires)
}

Voilà, la solution fonctionne mais ce n'est pas le mieux qu'on aurait pu espérer
__________________
__~{@ 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
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h45.


 
 
 
 
Partenaires

Hébergement Web