IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

iReport Discussion :

Rapport complexe avec ireport 5.0.1


Sujet :

iReport

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut Rapport complexe avec ireport 5.0.1
    Bonjour à tous ,e suis novice avec ireport et j'utilise la version 5.0.1.
    J'aimerais sortir un rapport qui va ressortir les emplois de temps voilà à la requette que j'ai utilisé pour sortir les données souhaitées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select periode.heure_debut as debut,periode.heure_fin as fin, matiere.nom asmatiere, enseignant.nom as nom,enseignant.prenom as prenom, enseignant.titre as titre,salle.nom as salle
    from periode,matiere,enseignant,affecter_matiere_enseignant,programmer,annee,classe,salle
    where periode.nom in (select nom from periode) 
    and matiere.id=affecter_matiere_enseignant.id_matiere
    and annee.id=affecter_matiere_enseignant.id_annee
    and classe.id=affecter_matiere_enseignant.id_classe
    and enseignant.id=affecter_matiere_enseignant.id_enseignant
    and salle.id=programmer.id_salle
    and periode.id=programmer.id_periode
    and classe.id=programmer.id_classe
    and programmer.jour IN($P{param1},$P{param2},$P{param3},$P{param4},$P{param5},$P{param6},$P{param7})
    and annee.nom=$P{param8}
    and classe.nom=$P{param9}
    le problème c'est que ma requette ne sort les informations sur les cours que lorsqu'ils sont programmé. J'aimerais avoir un tableau où la première colonne représente les périodes les 7 autres représente les jour de la semaine (en fait c'est un emploi de temps hebdomadaire que je veux sortir).
    J'aimerais savoir si je peux faire une première requette qui sort toutes les périodes afin de remplir la première colonne ainsi qu'une sous-requette qui va sortir les autres informations pour remplir dans les autres colonnes en fonction de la valeur de la première colonne (période).Si c'est possibles comment faire? Sinon comment je peux procéder pour résoudre mon problème?

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Bonjour à tous j'ai trouvé un début de solution. Ce que je fait c'est que dans mon rapport principale je sélectionne les horaires des cours et je passe en paramètre les jours de la semaine. Jusqu'ici pas de problème voilà un exemple en pièce jointe. Maintenant voilà le grand problème j'ai créé un sous rapport qui doit prendre en paramètre l'heure, le jour et la classe que je passe en paramètre depuis le rapport maitre e il y a des erreurs que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Error*filling*print...*net.sf.jasperreports.engine.JRException:*Error*executing*SQL*statement*for*:*report_emploi_de_temps_par_classe_subreport1 
    net.sf.jasperreports.engine.JRRuntimeException:*net.sf.jasperreports.engine.JRException:*Error*executing*SQL*statement*for*:*report_emploi_de_temps_par_classe_subreport1* ****at*net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:787)* ****at*net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:331)* ****at*net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:379)* ****at*net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:353)* ****at*net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2046)* ****at*net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778)* ****at*net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)* ****at*net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)* ****at*net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)* ****at*net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)* ****at*net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276)* ****at*net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745)* ****at*com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891)* ****at*org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)* ****at*org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)* Caused*by:*net.sf.jasperreports.engine.JRException:*Error*executing*SQL*statement*for*:*report_emploi_de_temps_par_classe_subreport1* ****at*net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:240)* ****at*net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1086)* ****at*net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:667)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1258)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)* ****at*net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:656)* ****at*net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59)* ****at*net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:203)* ****at*java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)* ****at*java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)* ****at*java.lang.Thread.run(Thread.java:729)* Caused*by:*org.postgresql.util.PSQLException:*ERREUR:*erreur*de*syntaxe*sur*ou*près*de*«*Nov*»* ****at*org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)* ****at*org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)* ****at*org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)* ****at*org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)* ****at*org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)* ****at*org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)* ****at*net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:233)* ****...*11*more* 
    Print not filled. Try to use an EmptyDataSource...
    voilà la requette que j'utilise dans le sous rapport:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select matiere.nom as matiere,matiere.code as code, enseignant.nom as nom,enseignant.prenom as prenom, enseignant.titre as titre,salle.nom as salle
    from periode,matiere,enseignant,affecter_matiere_enseignant,programmer,annee,classe,salle
    where periode.nom='07:30'
    and matiere.id=affecter_matiere_enseignant.id_matiere
    and annee.id=affecter_matiere_enseignant.id_annee
    and classe.id=affecter_matiere_enseignant.id_classe
    and enseignant.id=affecter_matiere_enseignant.id_enseignant
    and salle.id=programmer.id_salle
    and periode.id=programmer.id_periode
    and classe.id=programmer.id_classe
    and annee.id=programmer.id_annee
    and matiere.id=programmer.id_matiere
    and programmer.jour=$P!{jour}
    and annee.nom=$P!{annee}
    and classe.nom=$P!{classe}
    Apparemment ireport gère mal la jointure car j'ai étudié la doc et j'ai testé l'exemple sur les sous rapport qui a marché sans problème. Voilà le contexte
    j'ai une table région et une autre département, dans le département il y a la clé de la région qui migre. Je veux afficher la liste des régions avec leur département voici la requette du rapport principale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from region order by nom
    voici la requette du sous rapport:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select departement.nom from departement where departement.id_region=$P!{region}
    et le parametre je le passe a partir du rappot maitre ce qui marche sans problème. Mais lorsque je change la requette du sous rapport en ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select departement.nom from departement,region where departement.id_region=region.id and region.nom=$P!{region}
    sa ne marche plus alors que cette requette marche bien dans le terminal du SGBD voilà l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error*filling*print...*net.sf.jasperreports.engine.JRException:*Error*executing*SQL*statement*for*:*sous_rapport_test 
    net.sf.jasperreports.engine.JRRuntimeException:*net.sf.jasperreports.engine.JRException:*Error*executing*SQL*statement*for*:*sous_rapport_test* ****at*net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:787)* ****at*net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:331)* ****at*net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:379)* ****at*net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:353)* ****at*net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2046)* ****at*net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778)* ****at*net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)* ****at*net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)* ****at*net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)* ****at*net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)* ****at*net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276)* ****at*net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745)* ****at*com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891)* ****at*org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)* ****at*org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)* Caused*by:*net.sf.jasperreports.engine.JRException:*Error*executing*SQL*statement*for*:*sous_rapport_test* ****at*net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:240)* ****at*net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1086)* ****at*net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:667)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1258)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)* ****at*net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)* ****at*net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:656)* ****at*net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59)* ****at*net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:203)* ****at*java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)* ****at*java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)* ****at*java.lang.Thread.run(Thread.java:729)* Caused*by:*org.postgresql.util.PSQLException:*ERREUR:*la*colonne*«*centre*»*n'existe*pas* ****at*org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)* ****at*org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)* ****at*org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)* ****at*org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)* ****at*org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)* ****at*org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)* ****at*net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:233)* ****...*11*more*
    pourtant la region centre est bien dans la BD. Quelqu'un a une idée sur comment résoudre mon problème svp?
    Images attachées Images attachées  

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Du nouveau j'ai résolu mon problème il fallait juste ajouter des '' dans la requette et le tour est joué donc voilà la requette finale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select matiere.nom as matiere,matiere.code as code, enseignant.nom as nom,enseignant.prenom as prenom, enseignant.titre as titre,salle.nom as salle
    from periode,matiere,enseignant,affecter_matiere_enseignant,programmer,annee,classe,salle
    where periode.heure_debut='$P!{heure}'
    and matiere.id=affecter_matiere_enseignant.id_matiere
    and annee.id=affecter_matiere_enseignant.id_annee
    and classe.id=affecter_matiere_enseignant.id_classe
    and enseignant.id=affecter_matiere_enseignant.id_enseignant
    and salle.id=programmer.id_salle
    and periode.id=programmer.id_periode
    and classe.id=programmer.id_classe
    and annee.id=programmer.id_annee
    and matiere.id=programmer.id_matiere
    and programmer.jour='$P!{jour}'
    and annee.nom='$P!{annee}'
    and classe.nom='$P!{classe}'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rapport dynamique avec ireport 5.1
    Par junior222 dans le forum iReport
    Réponses: 1
    Dernier message: 04/12/2013, 12h47
  2. Exporter/generer un rapport Excel avec ireport
    Par machipot dans le forum iReport
    Réponses: 2
    Dernier message: 14/05/2012, 14h59
  3. Document complexe avec iReport
    Par habibreda dans le forum iReport
    Réponses: 3
    Dernier message: 11/11/2009, 16h42
  4. Rapports modifiable avec iReports
    Par twister9458 dans le forum Jasper
    Réponses: 2
    Dernier message: 07/08/2009, 13h26
  5. Réponses: 6
    Dernier message: 21/10/2008, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo