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 :

Comment lister les valeurs d'un 'group' dans une cellule plutôt que ligne par ligne?


Sujet :

BIRT

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 17
    Points
    17
    Par défaut Comment lister les valeurs d'un 'group' dans une cellule plutôt que ligne par ligne?
    bonjour,

    je fais mes premiers pas avec BIRT et je cherche un moyen de lister des valeurs "à l"horizontale".

    J'ai ma requête me renvoyant les détails d'un utilisateur dont les différents rôles qui lui sont attribués.

    Je souhaite pouvoir avoir une colonne "Roles" dans laquelle se trouve une liste séparé par des virgules ou des des espaces par exemple.

    Je travaille avec l'intégration de BIRT dans Eclipse.

    J'ai défini un "group" et résolu temporairement mon problème en affichant les rôles à la suite des autres détails. mais cela fait une ligne par rôle.

    à côté de quoi suis je donc passé?

    Merci pour votre aide

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353
    Par défaut BIRT et les Tables horizontales
    Bonjour,

    BIRT ne supporte pas les tableaux horizontaux , si c'est ce que vous recherchez.

    Par contre , vous avez un composant Tableau croisé qui peut faire l'affaire dans certains cas. ( depuis la version 2.2 )

    Si vous voulez bien expliquer votre besoin avec un screenshot , je peux investiguer une solution.

    Cdt,

    PS : Vous pouvez rajouter une Table dans...une table , un peu comme un sous-rapport. Ca aiderait peut etre?

  3. #3
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Je pense que ce sujet peut correspondre à tes attentes :

    http://www.developpez.net/forums/sho...d.php?t=210856

    Mais je ne suis pas certaine que ca corresponde à ce que tu veux puisque tu veux des valeurs séparées par des virgules.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Merci déjà pour être venu jeter un coup d'œil à mon dilemme

    BIM: j'ai bien pensé aussi à un regroupement dans une tiers colonne, mais je vais me retrouver avec des lignes géantes dans le cas d'un grand nombres de rôles.



    ce que j'ai comme résultat de ma requête c'est la suite :

    personne|nom|roles
    ------------------------

    p1 | toto | role1
    p1 | toto | role2
    p2 | titi | role1
    p2 | titi | role3

    ce que je souhaiterais être capable d'afficher c'est, pour être précis :

    ====================
    personne | nom
    --------------------------
    roles
    ====================

    p1 | toto
    --------------------------
    role1 role2
    ====================
    p2 | titi
    --------------------------
    role1 role 3
    ====================

    et pour l'instant, grâce à un group, j'ai :

    ====================
    personne | nom
    ====================
    roles
    ====================

    p1 | toto
    --------------------------
    role1
    --------------------------
    role2
    ====================
    p2 | titi
    --------------------------
    role1
    --------------------------
    role3
    ====================

    Auriez vous une suggestion?

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    La réponse de cucubau dans ce post devrait pouvoir t'interésser : http://www.developpez.net/forums/forumdisplay.php?f=351

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par BiM Voir le message
    La réponse de cucubau dans ce post devrait pouvoir t'interésser : http://www.developpez.net/forums/forumdisplay.php?f=351
    hum, désolé 'BIM' mais ce lien pointe vers une grosse pages plein de poste où cucubau a repondu a plein de trucs... auriez vous un lien plus direct, svp?

    Alf

  7. #7
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Pardon je me suis trompée de lien : http://www.developpez.net/forums/sho...d.php?t=547619

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    hum, cela a du goût de solution mais je ne comprends pas bien comment le mettre en pratique pour ma query.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353
    Par défaut Ta query
    Bah , il faut faire un peu de SQL en effet... grouper etc. avec un peu de recursivité. Je concède que c'est pas d'une grande facilité :-)

    En parralèle , j'ai posé la question à Jason , je suis sur qu'il va se pointer avec une soluce , mais comme c'est un peu tôt le matin aux US , ce sera pour cette nuit...


  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    et bien disons qu'en SQL j'ai bien trouvé quelque chose qui est à 2 doigts de me débloquer.

    je le poste car cela pourrait être utile à d'autre développeurs de rapports.

    le résultat est bien la concaténation de la seule colonne variant dans le record set.

    dans le code suivant, c'est une query sql hierarchique. je dois admettre que le contenu du code me dépasse, mais ça marche pour une personne donné (ici je donne l'id 1225:

    Code SQL : 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
    	LTRIM(SYS_CONNECT_BY_PATH(roles, ','),',') Concatenated_Names
    FROM
    (
    	SELECT
    		roles,
    		ROW_NUMBER() OVER (order by roles) rownumber,
    		COUNT(*) OVER () cnt
    	FROM
    	(
    		select
    			pc.roles
    		from
    			CLASS pc, 
    			CLASS_PERSON lppc
    		where
    			lppc.FK_PERSONID = 1225 and
    			pc.pk_objectid = lppc.fk_personnelclassid
    		order by
    			pc.roles
    	)
    ) data
    WHERE rownumber = cnt
    START WITH rownumber = 1
    CONNECT BY PRIOR rownumber = rownumber-1

    mais je voudrais le mettre dans la query rappatriant ma liste de personne :
    et ce qui ne marche pas c'est de remplacer la valeur hardcodé '1225' par l'id d'une personne (p.id)

    exemple : remplacer ci dessous '1225' par p.id

    Code SQL : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    select
    	p.id
    	p.LOGIN,
    	p.shortname,
    	p.STATUS
    	(       
    		SELECT
    			LTRIM(SYS_CONNECT_BY_PATH(roles, ','),',') Concatenated_Names
    		FROM
    		(
    			SELECT
    				roles,
    				ROW_NUMBER() OVER (order by roles) rownumber,
    				COUNT(*) OVER () cnt
    			FROM
    			(
    				select
    					pc.roles
    				from
    					CLASS pc,
    					CLASS_PERSON lppc
    				where
    					lppc.FK_PERSONID = 1225 and
    					pc.pk_objectid = lppc.fk_personnelclassid
    				order by
    					pc.roles
    			)
    		) data
                    WHERE
    			rownumber = cnt
                    START WITH rownumber = 1
                    CONNECT BY PRIOR rownumber = rownumber-1  
            )
            as roles
    from
    	PERSON p
    order by
    	p.login

    si quelqu'un touche en SQL...

  11. #11
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    En fait, cette solution serait parfaitement accessible via un ScriptedDataSet. En fait je pense qu'avec n'importe quel DataSet c'est faisable en utilisant les méthodes Script.

    Dans beforeOpen :
    Dans on Fetch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (prev == null || prev != row["nom"])
      mesRoles = row["role"];
    else
      mesRoles = mesRoles + row["role"];
    row["ensembleRoles"] = mesRoles;
    prev = row["nom"];
    A chaque fois que tu affiches les roles de quelqu'un tu prends la valeur max

    PS : La solution n'est pas forcément exacte.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    je vois la direction et entrevois la lumière au bout du tunnel.
    merci à tous de l'aide apportée


    je découvre néanmoins l'expression scripted dataset

    y a-t-il un tuto qui traine pour réaliser ceci avec birt dans eclipse?

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353

Discussions similaires

  1. Inscrire les valeurs d'un tableau dans une cellule
    Par gaby12 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 27/02/2015, 20h35
  2. comment lister les com port de ZylGSM dans un combobox
    Par bm1990 dans le forum Débuter
    Réponses: 1
    Dernier message: 21/09/2012, 11h16
  3. Lister les users d'un groupe dans ActiveDirectory
    Par l0quito dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/09/2009, 15h32
  4. Réponses: 10
    Dernier message: 19/09/2005, 22h24
  5. |VB6] Comment Lister les liens vers des fichiers d'une page web
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2005, 18h17

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