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

BIRT Discussion :

Afficher des groupes en colonne dans un tableau


Sujet :

BIRT

  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut Afficher des groupes en colonne dans un tableau
    Bonjour à tous et à toutes,
    J'aimerai savoir si je peux afficher des groupes en colonne.
    Ma requête me renvoie un emploie du temps avec comme champs:
    _ client->nom
    _ client ->id
    _ date
    _ sport
    _ exercice

    Un client peut être inscrit à un sport sur plusieurs dates et à chaque date il y aura des exercices différents.

    Voici ma requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT  C.nom AS client,
                C.id AS id_clt,
                I.date,
    	    S.libelle AS sport,
    	    E.libelle AS exercices
    FROM clients C
    	LEFT JOIN inscriptions I ON I.client_id = C.id
    	LEFT JOIN sport S ON S.id = I.sport_id
    	LEFT JOIN sport_inscription_exercice SIC ON SIC.inscription_id = I.id
    	LEFT JOIN exercices E ON E.id = SIC.exercice_id
    Le résultat de la requête ressemble à ceci:
    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
     
    Client id_clt Date____ Sport__ exercices
    ______________________________________
    Arthur 0001 01/01/10  Tennis  frappe
    Arthur 0001 01/01/10  Tennis  vise
    Arthur 0001 01/01/10  Tennis  échauffement
    Arthur 0001 01/01/10  Foot__ passe
    Arthur 0001 01/01/10  Foot__ tir
    Arthur 0001 01/01/10  Foot__ jongle
    Arthur 0001 01/01/10  Basket tir
    Arthur 0001 01/01/10  Basket dribble
    Arthur 0001 02/01/10  Tennis vise
    Arthur 0001 02/01/10  Tennis équilibre
    Arthur 0001 02/01/10  Tennis court
    Arthur 0001 02/01/10  Foot__ frappe
    Arthur 0001 02/01/10  Foot__ arret
    Arthur 0001 02/01/10  Basket court
    Arthur 0001 02/01/10  Basket tir
    J'aimerai avoir l'affichage suivant:
    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
     
    Client id_clt
    Date
    Sport___ Sport__ Sport__ ...
    Exercice Exercice Exercice
    Exercice Exercice Exercice
    Exercice Exercice Exercice
    .
    .
    .
    Date
    Sport___ Sport__ Sport__ ...
    Exercice Exercice Exercice
    Exercice Exercice Exercice
    Exercice Exercice Exercice
    .
    .
    .
    Pour notre exemple, le resultat serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Arthur 0001
    01/01/10
    Tennis Foot_ Basket
    frappe passe tir
    vise__ tir__ drible
    echauf jongle
    02/01/10
    Tennis Foot__ Basket
    vise__ frappe court
    equili arret_ tir
    court
    Quelqu'un aurait donc une idée pour qu'à un moment donnée certains groupe soit affiché en colonne?

    Merci d'avance

  2. #2
    Membre averti

    Inscrit en
    Avril 2010
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 178
    Points : 418
    Points
    418
    Par défaut
    Bonjour,

    Les objets qui permettent de faire des groupes sur des colonnes sont les tableaux croisés ("cross table" en anglais). Tu devras faire un cube de données ("data cube") à partir d'un data set, puis définir ton tableau croisé.

    Si tu ne connais pas le principe des tableaux croisés, tu peux t'amuser à les manipuler sous BIRT pour voir comment ça marche, ou alors sur Excel, ça existe aussi. En gros le principe est de pouvoir présenter des données selon des règles de regroupement en lignes et/ou en colonnes, donc ton besoin.

    Par contre, tu risques d'avoir beaucoup de mal à obtenir ton affichage comme tu le souhaites (avec les exercices affichés les uns en dessous des autres et à côté des autres), la règle implicite est très complexe. Tu devras probablement faire un script ou une transformation de données, ou alors des tableaux imbriqués.

    Bon courage.

  3. #3
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par nicolas.1.vives Voir le message
    Bonjour,

    Les objets qui permettent de faire des groupes sur des colonnes sont les tableaux croisés ("cross table" en anglais). Tu devras faire un cube de données ("data cube") à partir d'un data set, puis définir ton tableau croisé.

    Si tu ne connais pas le principe des tableaux croisés, tu peux t'amuser à les manipuler sous BIRT pour voir comment ça marche, ou alors sur Excel, ça existe aussi. En gros le principe est de pouvoir présenter des données selon des règles de regroupement en lignes et/ou en colonnes, donc ton besoin.

    Par contre, tu risques d'avoir beaucoup de mal à obtenir ton affichage comme tu le souhaites (avec les exercices affichés les uns en dessous des autres et à côté des autres), la règle implicite est très complexe. Tu devras probablement faire un script ou une transformation de données, ou alors des tableaux imbriqués.

    Bon courage.
    Merci de votre réponse.
    J'avais pensé à faire un tableau croisé mais ceci me paraissais beaucoup trop compliqué pour ce que je voulais faire.
    De plus, je n'arrive pas à afficher un champs string dans mon tableau croisé car il demande une opération! Enfin comment faire pour afficher mes deux premières lignes dans mon tableau croisé ?

  4. #4
    Membre averti

    Inscrit en
    Avril 2010
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 178
    Points : 418
    Points
    418
    Par défaut
    En effet, tu es obligé d'utiliser des agrégations pour afficher des données dans un tableau croisé. Et il n'y en a aucune existante qui correspond à ton besoin (les agrégations sur les string sont rares et pas très intéressantes).

    Je pense que le plus simple, c'est de faire un tableau croisé avec les sports en colonne, les clients et dates en ligne (ça ne correspond pas vraiment au format que tu souhaites mais bon c'est un exemple), et dans les cellules de données, tu mets un tableau avec les exercice dans les lignes de détail, avec un filtre sur le tableau filtrant les exercices en fonction du client, de la date et du sport correspondant.

    Tu me diras si tu y arrives.

    A+

    Edit : maintenant que j'y pense, si tu fais simplement comme ça, tu auras des colonnes vides (il t'affichera une colonne pour chaque sport, pour tous les utilisateurs et toutes les dates, donc tu auras probablement des colonnes inutilisées ici ou là). Donc tu devras peut-être faire une triple imbrication : un tableau simple avec un groupement sur l'utilisateur, et aussi peut-être la date ; le tableau croisé ; puis le tableau des exercices.

  5. #5
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par nicolas.1.vives Voir le message
    Et dans les cellules de données, tu mets un tableau avec les exercice dans les lignes de détail, avec un filtre sur le tableau filtrant les exercices en fonction du client, de la date et du sport correspondant.
    Je n'arrive pas à mettre un tableau dans les cellules de données étant donnée qu'il ne veut qu'une aggregation! Comment faire un filtre dans un tableau récupérant des champs d'un autre tableau?


    De plus, cette solution pourrait ne pas me convenir car je ne pourrai pas par la suite ajouter des information du client sur la même ligne que son nom et son id (par exemple son adresse, sa ville, son poids, sa taille, sa formule,...)

  6. #6
    Membre averti

    Inscrit en
    Avril 2010
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 178
    Points : 418
    Points
    418
    Par défaut
    Voilà un exemple. C'est vrai qu'il y a du bidouillage (obligation de mettre une mesure pour pouvoir mettre un tableau), mais sinon c'est relativement simple. Tu verras la syntaxe du filtre dans le tableau.

    Quant à ajouter des informations, je ne vois pas ce qui te gêne. Eventuellement tu poseras la question à ce moment là.

    Bon courage.

  7. #7
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par nicolas.1.vives Voir le message
    Voilà un exemple. C'est vrai qu'il y a du bidouillage (obligation de mettre une mesure pour pouvoir mettre un tableau), mais sinon c'est relativement simple. Tu verras la syntaxe du filtre dans le tableau.

    Quant à ajouter des informations, je ne vois pas ce qui te gêne. Eventuellement tu poseras la question à ce moment là.

    Bon courage.
    Merci je vais essayer

  8. #8
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci beaucoup cette tactique fonctionne!
    J'ai encore un bug, il me manque des sports pour un client alors que la requête me renvoie bien des exercices! Mais je pense que ceci doit être une faute de manipulation! Donc je résous le bug!

    Merci encore

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

Discussions similaires

  1. Afficher des résultats de requêtes dans un tableau
    Par turkish15 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 30/05/2014, 10h24
  2. ordonner des donnees en colonnes dans un tableau avec vba
    Par martingb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2014, 18h39
  3. Réponses: 1
    Dernier message: 30/06/2009, 12h03
  4. ajouter des lignes et colonnes dans un tableau
    Par sky88 dans le forum Débuter
    Réponses: 1
    Dernier message: 03/12/2008, 18h04
  5. Masquer des colonnes dans un tableau
    Par fornorst dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/04/2006, 21h00

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