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 :

Tri par variable calculée


Sujet :

Jasper

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Par défaut Tri par variable calculée
    Bonjour,

    Je suis en train de réaliser un rapport Jasper pour obtenir un classement de personnes par rapport à une certaine quantité.

    J'ai défini un Groupe de rapport avec le nom du client pour pouvoir calculer le total par client (dans une variable)

    Je récupère dans la base des infos de ce genre :

    Nom Quantité
    ---------------------------
    fred 10
    fred 5
    jean 5
    jean 3
    claude 12

    ce qui me donne:

    fred 15
    jean 8
    claude 12

    Maintenant, j'aimerais pouvoir afficher les clients en commençant par celui qui a la plus grande quantité pour finir avec celui qui a la plus petite pour obtenir :

    fred 15
    claude 12
    jean 8

    Mais je n'ai rien trouvé qui permette de réaliser cela.

    Qqun a-t-il une idée pour résoudre ce problème ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 215
    Par défaut
    Bonjour,
    tu ne peux pas faire un group by et un order by directement dans ta requête SQL ? Ce serait plus simple, non ?

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Par défaut
    Le problème c'est que je le fait avec quoi le group by ou order by ?

    Si je le fais par Nom, rien ne me dis que ce sera trié par quantité totale (car pour chaque client, j'additionne toutes les quantités que je trouve) donc c'est impossible de savoir quel client a la plus grande quantité totale avant de l'avoir calculée => je ne peux donc pas lui dire dans la requete !!

    C'est la meme chose pour la quantité, ca sera groupé ou ordré pour chaque quantité individuellement, mais moi j'ai besoin que ce soit effectif pour la quantité totale.

    Merci quand meme.....

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 215
    Par défaut
    Si tu as les champs nom et total dans ta table, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT nom, sum(total) as t
    FROM ma_table
    GROUP BY nom
    ORDER BY t
    et là ça fait bien la somme.

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Par défaut
    Ha oui je le voyais pas comme ça, mais il y a un autre problème :

    Je n'utilise pas SQL, mais des beans, c'est un programme JAVA qui m'envoie les données et je n'ai pas un accès direct avec la requête.

    Il me faut absolument une solution depuis le rapport et rien depuis la requête.
    J'aurais du préciser cela dès le début.....

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 215
    Par défaut
    Si tu crées un groupe dans ton formulaire (groupe basé sur ton client) et une variable chargée de faire les totaux.
    Pour ta variable tu lui mets "Somme" en type de calcul, pour Réinitialiser le type "Groupe" et tu choisis ton groupe par client.
    Dans Expression de Variable, tu choisis ton champs à sommer et dans Expression de valeur initiale "new Double(0)" si ton type est Double.
    Ensuite tu insères un textField (type Double et Temps d'évaluation Groupe) avec comme contenu ta variable et le tour est joué.

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Par défaut
    Ok, ce que tu me dis, va me donner la somme totale pour chaque client, ceci je l'ai déjà.

    Ce que je veux c'est que les clients soient affichés de la plus grande valeur a la plus petite.

    Là ce que j'ai c'est :

    1. Fred 15 (5+5+3)
    2. Jean 8 (5+3)
    3. Claude 13 (13)

    Ce que je veux c'est :

    1. Fred 15
    2. Claude 13
    3. Jean 8

    Est-ce que je suis assez clair sur ce que je veux? Sinon j'essaie de mettre une image....

    Dans tous les cas, merci pour ton aide

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 215
    Par défaut
    Ce que tu veux est très clair.
    J'étais confronté au même problème et je l'avais contourné en groupant et triant dans ma requête.
    Tu peux effectivement faire un tri dans Trier les options (quand tu choisis Consultation de Rapports), mais dans ce cas il faudrait que tes données arrivent aggrégées par client (car on ne peut pas trier sur une variable).
    Voilà. Désolé de ne pas pouvoir plus t'aider.
    Pour ton info, 5+5+3 = 13

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Par défaut
    lol,

    ok encore merci, si jamais qqun a une idée, je suis bien sûr preneur

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

Discussions similaires

  1. Tri par ordre croissant dans variable tableau
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/11/2009, 16h51
  2. Réponses: 2
    Dernier message: 13/02/2007, 18h02
  3. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34
  4. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27
  5. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 14h53

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