Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper
Jasper Forum d'entraide sur Jasper Reports. Avant de poster --> FAQ Jasper, Tutoriels Jasper
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 28/06/2007, 15h24   #1
Membre régulier
 
Inscription : octobre 2005
Messages : 259
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2005
Messages : 259
Points : 91
Points : 91
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
gids01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 15h27   #2
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2005
Messages : 162
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 162
Points : 203
Points : 203
Bonjour,
tu ne peux pas faire un group by et un order by directement dans ta requête SQL ? Ce serait plus simple, non ?
giragu03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 15h32   #3
Membre régulier
 
Inscription : octobre 2005
Messages : 259
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2005
Messages : 259
Points : 91
Points : 91
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.....
gids01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 15h41   #4
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2005
Messages : 162
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 162
Points : 203
Points : 203
Si tu as les champs nom et total dans ta table, tu peux faire :
Code :
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.
giragu03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 15h48   #5
Membre régulier
 
Inscription : octobre 2005
Messages : 259
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2005
Messages : 259
Points : 91
Points : 91
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.....
gids01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 16h10   #6
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2005
Messages : 162
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 162
Points : 203
Points : 203
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é.
giragu03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 16h19   #7
Membre régulier
 
Inscription : octobre 2005
Messages : 259
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2005
Messages : 259
Points : 91
Points : 91
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
gids01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 16h34   #8
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2005
Messages : 162
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 162
Points : 203
Points : 203
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
giragu03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 16h36   #9
Membre régulier
 
Inscription : octobre 2005
Messages : 259
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2005
Messages : 259
Points : 91
Points : 91
lol,

ok encore merci, si jamais qqun a une idée, je suis bien sûr preneur
gids01 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 16h53.


 
 
 
 
Partenaires

Hébergement Web