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

Jasper Discussion :

iReport - Plusieurs requetes dans un rapport


Sujet :

Jasper

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut iReport - Plusieurs requetes dans un rapport
    Bonjour,

    Je rencontre un problème pour créer un rapport sur des ventes. Je m'explique, j'arrive à créer un rapport qui regroupe les ventes par région et fait simplement la somme des différentes ventes (CA reel/obj, MB reel/obj, QTE reel/obj) selon une date donnée, mais j'aurais besoin de récupérer les sommes des ventes pour une date antérieure afin de faire des calculs dessus (ici, récupérer les memes sommes pour une date antérieure et calculer l'écart par rapport au premières somme calculée. Ma requete pour l'instant ressemble à ca :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    SELECT
         region.`REGION_ID` AS region_REGION_ID,
         region.`REGION_LIB` AS region_REGION_LIB,
         sum(vente.`VENTE_CA_REEL`),
         sum(vente.`VENTE_CA_OBJ`),
         sum(vente.`VENTE_MB_REEL`),
         sum(vente.`VENTE_MB_OBJ`),
         sum(vente.`VENTE_QTE_REEL`),
         sum(vente.`VENTE_QTE_OBJ`),
         (sum(vente.`VENTE_CA_REEL`) -  sum(vente.`VENTE_CA_OBJ`)) /  sum(vente.`VENTE_CA_OBJ`) * 100,
         (sum(vente.`VENTE_MB_REEL`) -  sum(vente.`VENTE_MB_OBJ`)) /  sum(vente.`VENTE_MB_OBJ`) * 100,
         (sum(vente.`VENTE_QTE_REEL`) -  sum(vente.`VENTE_QTE_OBJ`)) /  sum(vente.`VENTE_QTE_OBJ`) * 100
    FROM
         `magasin` magasin INNER JOIN `vente` vente ON magasin.`MAGASIN_ID` = vente.`FK_MAGASIN_ID`
         INNER JOIN `region` region ON magasin.`FK_REGION_ID` = region.`REGION_ID`
         INNER JOIN `enseigne` enseigne ON magasin.`FK_ENSEIGNE_ID` = enseigne.`ENSEIGNE_ID`
         INNER JOIN `famille` famille ON vente.`FK_FAMILLE_ID` = famille.`FAMILLE_ID`
    WHERE
         enseigne.`ENSEIGNE_LIB` IN ($P{ENSEIGNE}) OR $P{ALL_ENSEIGNE} = '1'
     AND famille.`FAMILLE_ID` IN ($P{PRODUIT}) OR $P{ALL_PRODUIT} = '1'
     AND vente.`VENTE_DATE` IN ($P{ANNEE}) OR $P{ALL_ANNEE} = '1'
     AND vente.`VENTE_DATE` >= $P{DateDebut}
     AND vente.`VENTE_DATE` <= $P{DateFin}
    GROUP BY
         region_REGION_ID
    Est ce que iReport est capable de créer une deuxième requete SQL (en changeant la date pour cet exemple) et ensuite faire de calculs entre des champs provenants des deux requetes ou faut-il que je passe par une requete compliquée en SQL pour récupérer cela ?

    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Points : 1 253
    Points
    1 253
    Billets dans le blog
    2
    Par défaut
    Tu peux utiliser un subdataset et avoir plusieurs dataset correspondant a plusieurs paramètre ($P{DATE} = date1 et $P{DATE} = date2).

    Par contre si tu comptes faire des calculs utilisant les valeurs du premier dataset avec le second (pour calculer une progression) je ne pense pas que cela soit possible. De même c'est pas possible de faire deux series dans un même graphe avec deux paramètres. (tu vas avoir un subdataset + un jeu de paramètres par graphe) Il est donc possible d'afficher deux fosi le même graphe a deux date différente, mais ca s'arrête là.

    Il te faut une couche de logique avant de générer (et calculer) les données que tu souhaites afficher (ça peut être fait dans la logique SQL -- mais c'est pas tout le temps évidement)

  3. #3
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2007
    Messages : 293
    Points : 440
    Points
    440
    Par défaut
    Je suis tout à fait d'accord avec Jmini. Si j'étais toi je ferais ca dans le SQL en utilisant par ex les "case when...then..else..end" dans les sum pour avoir les totaux sur la période que tuveux :
    Ex:
    sum(case when dateXXX between date1 and date2 then ventes.champ1 else 0 end) as TotalPeriode1,
    sum(case when dateXXX between date3 and date4 then ventes.champ1 else 0 end) as TotalPeriode2

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci bien pour vos réponses. J'ai fais ca en SQL avec le sum case (je savais même pas que c'était possible ca ! ) et c'est bon ca passe

    Merci encore pour votre aide, bonne journée.

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

Discussions similaires

  1. [C#/MySQL] Peut-on faire plusieurs requêtes dans une Transaction ?
    Par Ben42 dans le forum Accès aux données
    Réponses: 5
    Dernier message: 01/02/2011, 09h16
  2. [iReport] plusieurs Requetes dans le meme rapport
    Par moha1984 dans le forum iReport
    Réponses: 2
    Dernier message: 05/11/2010, 10h40
  3. plusieures requete dans le meme rapport
    Par john_wili dans le forum Jasper
    Réponses: 1
    Dernier message: 29/10/2008, 17h32
  4. Export Excel : Plusieurs requetes dans la même feuille
    Par joshua12 dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/11/2007, 13h58
  5. [C#] Récuperer resultat plusieurs requete dans dataGrid
    Par moulefrite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/07/2007, 15h38

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