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 :

ireport et création de rapport avec des paramètres


Sujet :

iReport

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut ireport et création de rapport avec des paramètres
    Salut tout le monde,
    en fait, j'ai resté bloquer devant un truc dans le reporting java+lib jasper
    mon problème est comme suit:
    j'ai un rapport qui affiche certains champs depuis ma source de données Oracle, dans la requete sql j'ai ajouté deux paramètre $P{NBRE1} et $P{NBRE2}
    la requete est la suivante:
    (select nom,prenom,adresse,$P{NBRE1},$P{NBRE2} from table where id=$P{param})
    sachant que ces paramètres j'ai l'envoyé par JAVA.
    je veux à l'affichage de chaque ligne envoyé plusieurs valeur pour les deux paramètres NBRE1 et NBRE2
    exemple:
    pour la première ligne renvoyé
    *******1ere ligne***********
    nom:pierre
    prénom:thomas
    adress:paris
    nbre1=1
    nbre2=20

    nom:pierre
    prénom:thomas
    adress:paris
    nbre1=30
    nbre2=40
    ************
    afficher deux fois la mem ligne avec deux valeur différent de NBRE1 et NBRE2

    et ainsi de suite pour le reste des personnes
    sachant que les valeurs de ces paramètres sont défini depuis JAVA

    SVP comment je peux procèder,

    c'est urgent et bloquant
    je serai très reconnaissant
    votre ami

  2. #2
    Membre émérite

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Billets dans le blog
    2
    Par défaut
    J'ai du mal a comprendre ce qu'il y a dans ta table. quelque chose comme cela :
    * nom,
    * prenom,
    * adresse,
    * valeur_a
    * valeur_b
    * valeur_c
    * valeur_d
    Ensuite tu vas passer pour chaque rapport
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NBRE1 = "valeur_b";
    NBRE2 = "valeur_c";
    A quoi correspondent tes affichages multiples ???
    (deux fois les infos pour pierre thomas)

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    tu as raison c'est pas trop clair, je vais essayer d'expliquer encore plus.
    ma table ne présente pas les colonnes nbre1 et nbre2?elle représente juste les nom,prénom,adresse,
    les paramètres NBRE1 et NBRE2, sont indépendants de la base Oracle;ils récupèrent ses valeurs depuis mon programme java.
    sachant que pour chaque ligne du résultat il y en a plusieur valeurs de NBRE1 et NBRE2
    cad
    pour la ligne qui répresente pierre(nom:pierre,prénom:thomas,adress:paris) il ya une liste des valeurs de NBRE1 (10,30,60,...) et NBRE2(20,40,70,..)
    moi ce que je veux envoyé pour chaque ligne de la requete les valeurs nbre1 et NBRE2 une par une cad:
    nom:pierre
    prénom:thomas
    adress:paris
    NBRE1:10
    NBRE2:20
    *****************
    nom:pierre
    prénom:thomas
    adress:paris
    NBRE1:30
    NBRE2:40
    *****************
    nom:pierre
    prénom:thomas
    adress:paris
    NBRE1:60
    NBRE2:70
    ****************
    lorsque toutes la fin de la liste de nbre1 et NBRE2 est atteins, je veux que l'affichage passe à la seconde ligne (nom:Steven,prénom:Carlos,adress:Lyon) et son propre liste est:NBRE1(5,20,60,...)et NBRE2(15,30,75,...)
    en gros le résulat souhaité ressemble à ça:

    nom:pierre
    prénom:thomas
    adress:paris
    NBRE1:10
    NBRE2:20
    *****************
    nom:pierre
    prénom:thomas
    adress:paris
    NBRE1:30
    NBRE2:40
    *****************
    nom:pierre
    prénom:thomas
    adress:paris
    NBRE1:5
    NBRE2:15
    **************
    ***
    nom:Steven
    prénom:Carlos
    adress:lyon
    NBRE1:20
    NBRE2:30
    *****************
    nom:Steven
    prénom:Carlos
    adress:lyon
    NBRE1:60
    NBRE2:75
    ***************************
    j'espère que les choses sont maintenant plus clairs.

    vraiment c'est pénible j'ai pas trouvé la bonne solution
    NB:les valeurs NBRE1 et NBRE2 sont envoyé depuis JAVA, et le rapport aussi se lancera depuis JAVA.

    merci pour votre compréhension

  4. #4
    Membre émérite

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Billets dans le blog
    2
    Par défaut
    Voila comment je ferais :


    Prérequis:

    Il faut que par personne, ton programme soit capable de générer la JRDataSource qui va bien.(qui renvoit tous les couples NBRE1 et NBRE2 pour une personne).

    Créer un rapport sans database

    A priori, je pense que c'est possible... En gros il s'agit d'une data source qui implémente une requête (le passage de l'id de la personne).

    Custom JRDataSource et paramètres

    ---------------------

    Raport principal :

    * Datasource : base oracle
    * Parametre : les parametres necessaire pour ta requête SQL + une reference sur ta datasource secondaire. (les nombre)
    * Field : nom, prénom, adress

    * Requête : tu vas chercher les personnes dans ta base.

    * Dans la bande détail tu appelles le sous rapport.
    - Tu précises la datasource du sous rapport (que tu as indique en paramètre).
    Connexion d'un sous-rapports

    - Tu passes tes fields de cette requête comme paramètre. (voir plus bas)
    paramètre nom = $F{nom}
    paramètre prenom = $F{prenom}
    paramètre address = $F{adresse}


    ---------------------

    Sous rapport :
    * Datasource : tes données Java
    * Parametre : nom prenom, adresse
    * Field : NBRE1, NBRE2

    * Requête : tu var chercher tes couples ((NBRE1, NBRE2), (NBRE1, NBRE2), (NBRE1, NBRE2)) qui correspondent a la personne en question.


    Dans ta bande détail tu affiches :
    *****************
    nom:$P{nom}
    prénom:$P{prenom}
    adress:$P{adresse}
    NBRE1:$F{NBRE1}
    NBRE2:$F{NBRE2}
    *****************

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    Ok je vais essayer cette idée.
    je te dirai la nuit le résultat la nuit peux être
    merci énormément amigos

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    Bon j'espère que je vous trouverai patient.
    tu var chercher tes couples ((NBRE1, NBRE2), (NBRE1, NBRE2), (NBRE1, NBRE2)) qui correspondent a la personne en question.

    ?????????
    comment je vais chercher ses valeur depuis le sous-report dans les classe java
    cs valeurs ne sont pas stocké dans une base de donnée pout faire un SELECT FROM
    ces valeurs sont envoyé depuis JAVA.
    comment on peut les afficher dans des FIELD????
    2eme interrogation:
    est ce vous pouvez m'envoyé un exemple concret de création de JRDataSource je crois pas que j'ai bien compris le mécanisme de JRDaraSource et Ireport
    merci jmini

  7. #7
    Membre émérite

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Billets dans le blog
    2
    Par défaut
    La réponse que j'ai faite est théorique, je ne l'ai pas testée.

    De plus je n'ai jamais utilisé JasperReport dans un programme perso Java. Je n'ai utilisé que les logiciels finis de la suite Jasper et principalement avec une base de données.

    Donc je ne peux pas donner plus de détails techniques, mais je pense que c'est la bonne manière de procéder. Sans utiliser une JRDataSource personnalisée, tu n'as pas de moyen de créer une bande détail par couple de valeurs, et je ne vois pas comment obtenir le résultat que tu souhaites avec JasperReport.


    J'avoue que la solution que j'ai donnée, marcherait parfaitement avec une base de donnée. Avec des données issues de Java je ne sais pas trop.

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    Sakut,
    j'ai des soucis a propos de passage des Fileds de Master Report vers Subreport
    ( $P{NOM}=$F{nom} avec:$F{nom}: filed de Master report (Oracle)
    et $P{NOM}:paramètre de Sous rapport

    le message d'erreur est Field not*found : nom

    comment on procède pour passer des field au sous rapport

  9. #9
    Membre émérite

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Talel2010 Voir le message
    le message d'erreur est Field not*found : nom
    Est ce que ton rapport principal fonctionne (ie est ce que les champs sont bien declare dans celui ci).

    Tu peux le tester rapidement en affichant dans la bande de detail (du rapport principal)
    *****************
    nom:$F{nom}
    prénom:$F{prenom}
    adress:$F{adresse}
    *****************

    Si ca ca marche.
    Est ce que le subraport a bien les paramettres qui vont bien ?

    Si oui le mapping que je decrivais devrais marcher.

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    je peux que te remercier Jmini pourvton idée, c'est résolu pour 90%
    mais encore j'ai un souci mais pa assez difficle que le prmier truc
    en fait, j'aimerai afficher le valeur d'un champ dans mon rapport en dehors de ma requete sql
    exemple (comme d'habitude pour expliquer )

    select nom,prenom,date_naissance, $P{nbre_enfant} from personne where
    ($P!{whereClause})


    sachant que le paramètre whereClause est une liste des id comme celle ci1,95,20,32)
    et le parametre nbre_enfant n'est pas une colonne de la base de donnée , c'est une liste des donnée envoyé par mon prog voir comme celle ci1,3,0,4)

    j'aimerai avoir un rapport dont l'affichage est comme suit:

    nom:toto
    prenom:toto
    datenaissance:10/10/1950
    nbreenfant:1

    nom:titi
    prenom:titi
    datenaissance:10/01/1975
    nbreenfant:3

    nom:tata
    prenom:tata
    datenaissance:02/02/1960
    nbreenfant:0

    et ainsi de suite
    comment je doit déclarer le type de mon paramètre nbre_enfant

    SVP j'ai panik toujous avec Jasper

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/02/2010, 12h01
  2. Réponses: 3
    Dernier message: 16/04/2009, 08h56
  3. Réponses: 0
    Dernier message: 25/07/2007, 17h10
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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