Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Autres
Autres Autres logiciels d'informatique décisionnelle, de statistiques, générateurs d’états ou outils infocentre : EpiInfo, FreeReport, FastReport, Hyperion, JPivot, QuickReport, Mondrian, ReportBuilder, Stata, Spad, Spss, etc.
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 24/06/2008, 13h15   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Par défaut [QuickReport] Groupage sur 2 ou + de champs a/ QRGroup

Bonjour a tous

Et-il possible de pouvoir faire un groupement sur deux ou plus de champs d’une table ou requête ??? Avec un QRGroup ???
si oui vous seriez gentil de m’expliquer comment, merci

merci a vous tous
810mcu
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 15h11   #2
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 634
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 634
Points : 4 537
Points : 4 537
La question est peu floue , mais je dirais que oui . Maintenant il faudait quand même un peu plus de détail , description de la table, ordre de tri, groupage(s) à faire etc ...
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 16h17   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Voila, je voudrait faire un groupage par deux champs (ou plus) d’une table,

Je suis en D6 + Access2000 et QuickRep
J’ai écrit ce-ci
Code :
SELECT n_b_exp, ano_b_exp, essence FROM grume GROUP BY n_b_exp, ano_b_exp, essence
l’idée est de sélectionné tous les registre de la table(grume) et de regroupé par (n_b_exp, ano_b_exp, essence)(les champs de la table)

au fait ce que j’ai fait fonctionne de la maniere suivante, il me regroupe p/ n_b_exp en ne faisant pas de distinction si ano_b_exp différent il regroupe tout ensemble !!!
Maintenant pourrait-on donné un critère au QRGroup du genre "grume.n_b_exp and grume.ano_b_exp", Ça reviendra a me regroupé par n_b_exp de cet année ano_b_exp, si l’un des deux critères sont différents op il saute !!!

Suis-je assez clair, mille excuses si pas trop clair

Si je l’exécute avec 1 bande détails là je n’est aucun problème il le fait comme il la faut,
L’idée et de regroupé par les champs n_b_exp, ano_b_exp…

merci de votre aide a vous tous
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 16h33   #4
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 634
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 634
Points : 4 537
Points : 4 537
première remarque rapide :

pourquoi faire un sql avec GROUP BY , il n'y a aucune fonction d'agrégat
un simple ORDER BY suffit (ou alors je n'ai pas compris )

secundo :
Que doit faire le groupe?
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 18h46   #5
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Oui sorry, tu as raison, j’ai omis,

Table1,
Champs n_b_exp, ano_b_exp, essence

Au fait je doit regroupé les essence du n_b_exp de cette année ano_b_exp
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 08h25   #6
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 634
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 634
Points : 4 537
Points : 4 537
Citation:
Au fait je doit regrouper les essences du n_b_exp de cette année ano_b_exp
c'est toujours pas trés clair n_b_exp ne me dis pas grand chose ? Numero bon expedition ? Ano_b_exp -> Annee bon Expedition ?

si l'etat doit ressembler à ceci

Code Etat succint :
1
2
3
4
5
6
7
8
9
 
Annee
  Essence 
       N°Bon 
       N°Bon 
  Essence
      N°Bon
Annee
  ......

Alors l'ordre SQL serait
Code :
ORDER BY Ano_b_Exp,Essence,n_b_exp
en mettant deux QrGroup(s)
le premier avec Expression= table1.Ano_b_exp
le second avec Expression= Table1.Essence

Toutefois si seule une année est demandée une clause Where dans la Query seras bien plus judicieuse
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 09h54   #7
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Bonjour SergioMaster,
Citation:
Envoyé par SergioMaster Voir le message
c'est toujours pas trés clair n_b_exp ne me dis pas grand chose ? Numero bon expedition ? Ano_b_exp -> Annee bon Expedition ?
n_b_exp = Nº du bon
Ano_b_exp = année du bon
essence = essence,

Regroupé toutes les essences de ce Nº du bon qui a année du bon

Code :
1
2
3
4
5
6
7
8
9
10
n_b_exp = Nº du bon
               Ano_b_exp = année du bon
                                essence = essence,
	                                  essence
	                                  essence
                                essence
	                                  essence
	                                  essence
                                essence
	                                  essence
je teste ce que tu m'a expedier, je pense que...

j’ai un doute ???
Code :
1
2
3
mais dis-moi, si j’ai QRGroup1 
et 		          QRGroup2 se refere a la même dataset obligatoirement ?
Et			         QRGroup3 aussi ?
Merci a toi,
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 10h24   #8
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
En te lissant je dirais que cette procédure devrait marcher alors
QRGroup1 avec Expression= table1.n_b_exp
QRGroup2 avec Expression= table1.Ano_b_exp
QRGroup3 avec Expression= table1.essence

Order by n_b_exp, ano_b_exp, essence

Oui mais il ne tien pas compte des années (Ano_b_exp) différentes !!!
Il mélange le tout (années), serais t’il p c q tous les deux champs sont des texte ???
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 11h59   #9
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 634
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 634
Points : 4 537
Points : 4 537
le QrGroup3 ne me parait pas nécessaire puisque normalement égal à la ligne détail .

Ce qui me parait pas clair en revanche c'est la hiérarchie.

dans ma logique un Bon d'Expedition se fait à une certaine date et contient un certain nombre d'essences d'où ma réponse
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 12h40   #10
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Sorry, je ne t’est pas écrit,
j’ai besoin de faire un groupement p/ essence puisque j’ai différentes essences et je doit résumé leurs nombres et autres calculs essence/essence du bon d’expédition de cette année

Code :
1
2
3
4
5
6
7
8
essence = essenceA,
	    essenceB
	    essenceC
essence
	    essenceB
	    essenceC
essence
	    essenceA
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 13h15   #11
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
en écrivant un query que voila, il fait la meme chose

Code :
1
2
3
4
SELECT n_b_exp, ano_b_exp, essence
FROM
TABLE
GROUP BY n_b_exp, ano_b_exp, essence
données
table
Code :
1
2
3
4
5
6
7
n_b_exp, ano_b_exp, essence
03          2008         essenceA
03          2006         essenceB
03          2008         essenceC
01          2007         essenceC
02          2008         essenceB
...
résultat désiré
Code :
1
2
3
4
5
6
7
8
9
10
11
01          2007          essenceC(count,total)
 
02          2008          essenceB(count,total)
 
03          2006         essenceA(count,total)
                         essenceB(count,total)
 
03          2008         essenceA(count,total)
                         essenceB(count,total)
                         essenceC(count,total)
...
c’est a ça que voudrais arrivée
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h24   #12
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Autre doute,
dans un
QRGroup1 avec Expression= table1.n_b_exp and table1.Ano_b_exp ???
ça peut marché ???
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 17h25   #13
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 634
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 634
Points : 4 537
Points : 4 537
j'ai toujours évité de mettre deux conditions sur un group , de plus ce serait plutôt OR que AND en effet pour que ce que j'appelle une rupture (changement de groupe) se fasse c'est selon une des conditions ou les deux sinon je crois que dans ce cas

01 2007
02 2007 <--- rupture sur bon vrai mais sur année faux donc FAUX
03 2008

ça ne marcherait pas

Maintenant Count de quoi et total de quoi

Code :
1
2
3
4
5
 
SELECT n_b_exp, ano_b_exp, essence,COUNT(*),SUM(QTE) 
FROM
TABLE
GROUP BY n_b_exp, ano_b_exp, essence
sinon pour le résultat demandé , en ligne comme ça , la soluce c'est de gérer l'edition dans le beforeprint de la ligne détail , pas besoin de QRGroup dans ce cas de figure mais une gestion avec deux variables (dites de contrôle)

genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Form1.DetailBand1BeforePrint
begin
IF bon.caption<>Query.FieldByName('n_b_exp').asString then
 begin
   Bon.Caption:=Query.FieldByName('n_b_exp').asString;
   Annee.Caption:=''; // force la réédition de année en cas de changement de bon
 end;
IF annee.Caption<>Query.FieldByName('ano_b_exp').asString then
   Annee.Caption:=Query.FieldByName('ano_b_exp').asString;
end;
ceci dit, c'est fait à la va vite , Bon.Caption et Annee.Caption (QRLabel) ont besoin d'être initialisé au début de l'état et cela ne géré pas le saut de ligne entre chaque bon .

un panachage des deux solutions pour 'gérer' le saut de ligne
un QRGroup avec Expression=table1.n_b_exp
et un GroupFooter Associé qui fera la ligne Blanche
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 10h08   #14
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Bonjour SergioMaster,

J’ai trouver, tu remarqueras que il y a de ton idée dans ce que j’ai pu faire,
Je me permets d’éclaté ici toute la procédure en pensant qu’elle pourras servir ou en partie a qq, qui sait !!!

Query1 = données
Code :
1
2
3
4
SELECT n_b_exp, ano_b_exp, essence
FROM
grume
GROUP BY ano_b_exp, n_b_exp, essence
Query2 = p/ totaux partiel
Code :
1
2
3
4
5
6
7
8
9
10
SELECT
count(n_abat) AS nbr_grumes,
sum(volume_sa_def) AS t_volume_sa_def,
sum(volume_aa_def) AS t_volume_aa_def
FROM
grume
WHERE
(n_b_exp LIKE :n_b_exp) 
AND (ano_b_exp LIKE :ano_b_exp)
AND (essence LIKE :essence)
Query3 = total général
Code :
1
2
3
4
5
6
7
8
SELECT
count(essence) AS nbr_grumes,
sum(volume_sa_def) AS t_volume_sa_def,
sum(volume_aa_def) AS t_volume_aa_def
FROM
grume
HAVING
(n_b_exp =:n_b_exp) AND (ano_b_exp =:ano_b_exp)
Code :
1
2
3
QRGroup1 avec Expression= Query1.n_b_exp
QRGroup2 avec Expression= Query1.essence
BandeType= rbGroupFooter (affiche le nbr_grumes du Query2(totaux du n_b_exp))…etc.
La ça marche a merveille, comme j’ai écrit au début il y de ton idée, c’est en lissant ton code que je me suis mis a faire des teste divers et me suis rendu compte que en changeant l’ordre des champs j’avais des résultats divers, logique.
C’est que des fois on focalise sur un truc qui est archi faux et alors on ne veut pas regardé ailleurs, mais bon l’insistance paye toujours.

Autre question, là aussi je ne sais pas trop comment recomposer mon Query1 pour y ajouté une deuxième table, je m’explique Table2 même recherche même résultat, l’idée est de pouvoir affiche aussi les données de la Table2 pour comparer résultat Table1 et Table2 ???

Merci a toi SergioMaster et a vous tous
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 11h31   #15
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 634
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 634
Points : 4 537
Points : 4 537
tu pourrais pas donner les descriptions des tables ?

dans les SQL pourquoi l'opérateur LIKE ? pourquoi pas = tout simplement à moins que tu nous cache des choses Quels sont les liasions entre QUERY etc...

dans le groupFooter pourquoi avoir besoin d'une Query TQRExpr est là pour ça

Code SQL :
1
2
3
4
5
6
7
8
 
SELECT n_b_exp, ano_b_exp, essence,
count(n_abat) AS nbr_grumes,
sum(volume_sa_def) AS t_volume_sa_def,
sum(volume_aa_def) AS t_volume_aa_def
FROM
grume
GROUP BY ano_b_exp, n_b_exp, essence

ne fait pas ce que tu veux ?

Pour deux tables grume1,grume2 propositions de délire

JOIN

Code SQL :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT g1.n_b_exp, g1.ano_b_exp, g1.essence,
count(g1.n_abat) AS nbr1_grumes,
sum(g1.volume_sa_def) AS t1_volume_sa_def,
sum(g1.volume_aa_def) AS t1_volume_aa_def,
count(g2.n_abat) AS nbr2_grumes,
sum(g2.volume_sa_def) AS t2_volume_sa_def,
sum(g2.volume_aa_def) AS t2_volume_aa_def
FROM
grume1 g1 full JOIN grume2 g2 ON g1.n_b_exp=g2.n_b_exp .......
GROUP BY ano_b_exp, n_b_exp, essence

UNION
Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT n_b_exp, ano_b_exp, essence,
count(n_abat) AS nbr_grumes,
sum(volume_sa_def) AS t_volume_sa_def,
sum(volume_aa_def) AS t_volume_aa_def
FROM
grume1
UNION
SELECT n_b_exp, ano_b_exp, essence,
count(n_abat) AS nbr_grumes,
sum(volume_sa_def) AS t_volume_sa_def,
sum(volume_aa_def) AS t_volume_aa_def
FROM
grume2
GROUP BY ano_b_exp, n_b_exp, essence
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 16h58   #16
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Quelles sont les liaisons entre QUERY etc...
Juste les Data Source pour les deux

Dans le groupFooter pourquoi avoir besoin d'une Query TQRExpr est là pour ça…
explique-moi comment ??? p c q chez moi il reste a Zéro !!! et Expression= Count, QRBand et le FooterBand de QRGroup qui a comme Expression= Query1.n_b_exp
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 19h06   #17
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 634
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 634
Points : 4 537
Points : 4 537
Citation:
Envoyé par 810mcu Voir le message
Quelles sont les liaisons entre QUERY etc...
Juste les Data Source pour les deux
Donc je priviligierai l'operateur '=' plutôt que LIKE et donc la première Query de mon dernier Post me semble correcte (dur de tester sans table)

Citation:
Envoyé par 810mcu Voir le message
Dans le groupFooter pourquoi avoir besoin d'une Query TQRExpr est là pour ça…
explique-moi comment ??? p c q chez moi il reste a Zéro !!! et Expression= Count, QRBand et le FooterBand de QRGroup qui a comme Expression= Query1.n_b_exp
Expression=COUNT (comptera le nombre d'enregistrements -> Essences)
Expression=SUM(Query1.nbr_grumes)
Expression=SUM(Query1.t_volume_sa_def) etc....
toutefois attention au remise à zero (ResetAfterPrint)
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 10h35   #18
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
Bonjour SergioMaster,

J’ai re-testé, Il reste tj a zéro
Citation:
Envoyé par SergioMaster
Dans le groupFooter pourquoi avoir besoin d'une Query TQRExpr est là pour ça…
explique-moi comment ??? p c q chez moi il reste a Zéro !!! et Expression= Count de QRBand3 et le FooterBand de QRGroup1 qui a comme Expression= Query1.n_b_exp

sorry, Mais Je ne vois pas comment il peut faire le total(count) des essences ???
pour
Expression=SUM(Query1.nbr_grumes)
Expression=SUM(Query1.t_volume_sa_def) etc.... pareille reste a zéro...C’est pas 1 commande que je dois activé ???
que avec 1 Query
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 11h25   #19
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 177
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 177
Points : 14
Points : 14
SergioMaster,
Donne moi un coup de main svp,
Pour la déclaration des autres champs dans la clause FROM entre les champs "," c’est bon ou autre chose?
Question : Tous les champs doivent être déclaré dans cette clause ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT g1.n_b_exp, g1.ano_b_exp, g1.essence,
count(g1.n_abat) AS nbr1_grumes,
sum(g1.volume_sa_def) AS t1_volume_sa_def,
sum(g1.volume_aa_def) AS t1_volume_aa_def,
count(g2.n_abat) AS nbr2_grumes,
sum(g2.volume_sa_def) AS t2_volume_sa_def,
sum(g2.volume_aa_def) AS t2_volume_aa_def
 
FROM
grume g1 full JOIN grume_loca g2 ON g1.n_b_exp=g2.n_b_exp, 
g1.ano_b_exp=g2.ano_b_exp, g1.essence=g2.essence, g1.n_abat=g2.n_abat,
g1.volume_sa_def=g2.volume_sa_def,
 
GROUP BY ano_b_exp, n_b_exp, essence
Help, La je me mêle les pinceaux
Code :
1
2
count(g1.n_abat) AS nbr1_grumes, 
seras déclaré ds le FROM g1.n_abat=g2n_abat,
je ne le sens pas!!!
810mcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 11h53   #20
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 634
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 634
Points : 4 537
Points : 4 537
la partie ON du JOIN n'est pas bonne
elle doit être faite comme une clause WHERE c'est à dire avec des AND /OR

c'est à toi de définir les champs commun entre les deux tables cf cours SQL

maintenant je t'ai fait cette proposition sans vraiment comprendre la structure de tes tables donc il faut bien réfléchir à ton type de jointure (je ne suis pas trop calé dans ce domaine) . Si tu patauges fait plutôt un post dans le forum SQL en indiquant ton type de SGBD et surtout en décrivant bien tes tables et ce que tu veux obtenir de même que ton essai de code (voir même un petit jeu d'essai)
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h57.


 
 
 
 
Partenaires

Hébergement Web