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 :

[2.2.2] Creer un DynamicText


Sujet :

BIRT

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut [2.2.2] Creer un DynamicText
    Bonjour,

    Je recherche le moyen de créer un dynamic text. Je m'explique.
    En fonction d'une donnée dans mon dataSet je souhaite faire des accords dans une phrase ( rajouter des e si c'est une femme par exemple).
    Comme puis-je faire ?

    J'ai créé un dynamic text, j'appel mon champ row["champ1"] et j'ai rajouté le test == 0 (Champ1 est un integer). Mais il m'affiche toujours false.
    D'avance merci de votre aide.

    @+

  2. #2
    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,

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    chaine = "apprenti";
    if (row["Champ1"] == 0) //sinon if (row["Champ1"] == "0")
        chaine += "e";
    chaine;

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Bon j'ai fait un copier-coller de ton code dans mon rapport.
    Mais il trouve que row["champ1"] == 0 est false
    Pourtant quand je fait une sortie simple de mon champ1 il est bien à 0.
    Tu as une idée ?

  4. #4
    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
    Tu as essayé entre double côtes ?

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    oui j'ai essayé mais sans succès.

  6. #6
    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
    Tu peux enlever le typage de Champ1 stp ?

    Et tu fais bien attention à la casse j'espère ? champ1 est différent de Champ1.

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Donc j'ai essayé plusieurs choses sans succès.
    chaine = "Né";
    if(["CHAMP1"] == "0") {
    chaine += "e";
    } else {
    chaine += "z";
    }
    chaine;

    if(["CHAMP1"] == 0) {
    chaine += "e";
    } else {
    chaine += "z";
    }
    chaine;

    if(row["CHAMP1"] == "0") {
    chaine += "e";
    } else {
    chaine += "z";
    }
    chaine;


    if(row["CHAMP1"] == 0) {
    chaine += "e";
    } else {
    chaine += "z";
    }
    chaine;

    Quand tu parles de typage tu parles à quelle niveau ?
    Merci d'avance de tes réponses.

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Points : 321
    Points
    321
    Par défaut
    mais des accolades :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    chaine = "apprenti";
    if (row["Champ1"] == 0)  {
        chaine += "e";
    }
    chaine;
    De plus, à ta place j'utiliserais plutôt les fichiers properties pour disposer de 2 ou 3 version de tes messages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    montexte.masculin = le chien mange son os
    montexte.feminin = la chienne mange son os
    montexte.pluriel = les chiennes mangent leur os
    et dans ton dynamic Text :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (row["Champ1"] == 0)  {
      reportContext.getMessage("montexte.feminin", reportContext.getLocale());
    }
    else if (row["Champ1"] == 1)  {
      reportContext.getMessage("montexte.masculin", reportContext.getLocale());
    }
    else  {
      reportContext.getMessage("montexte.pluriel", reportContext.getLocale());
    }

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Marche pas non plus avec les accolades.
    Et pour ce qui est de ta solution c'est juste pour accorder en cas féminin / masculin, et c'est pour générer des courriers dans des reports.
    Pas de programme java en amont.
    Extraction de données en SQL et positionnement des champs un report.

  10. #10
    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
    Citation Envoyé par imhotep_zr7s Voir le message
    Donc j'ai essayé plusieurs choses sans succès.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(["CHAMP1"] == "0") {
        chaine += "e";
     } else {
     	chaine += "z";
     }
    chaine;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(["CHAMP1"] == 0) {
        chaine += "e";
     } else {
     	chaine += "z";
     }
    chaine;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(row["CHAMP1"] == "0") {
        chaine += "e";
     } else {
     	chaine += "z";
     }
    chaine;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(row["CHAMP1"] == 0) {
        chaine += "e";
     } else {
     	chaine += "z";
     }
    chaine;

    Quand tu parles de typage tu parles à quelle niveau ?
    Merci d'avance de tes réponses.
    Le problème vient du test, concentrons nous dessus.
    Peux-t'on avoir ton fichier en PJ stp ?

    Pour le typage, je parle de celui dans le DataSet et le DataBinding.

    Citation Envoyé par erwan.bodere Voir le message
    mais des accolades :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    chaine = "apprenti";
    if (row["Champ1"] == 0)  {
        chaine += "e";
    }
    chaine;
    De plus, à ta place j'utiliserais plutôt les fichiers properties pour disposer de 2 ou 3 version de tes messages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    montexte.masculin = le chien mange son os
    montexte.feminin = la chienne mange son os
    montexte.pluriel = les chiennes mangent leur os
    et dans ton dynamic Text :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (row["Champ1"] == 0)  {
      reportContext.getMessage("montexte.feminin", reportContext.getLocale());
    }
    else if (row["Champ1"] == 1)  {
      reportContext.getMessage("montexte.masculin", reportContext.getLocale());
    }
    else  {
      reportContext.getMessage("montexte.pluriel", reportContext.getLocale());
    }
    Les accolades ne changent rien dans le cas d'une seule ligne.

    Un appel de ce type peut simplement être fait de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reportContext.getMessage("ma.clef.de.texte");
    Si la locale n'est pas initialisée, par défaut ce sera celle du système.
    Et si le fichier de la langue en question n'existe pas, par défaut ce sera le fichier sans suffixe. Bref...

    Ce n'est pas très pertinent puisque ca revient au même de faire : Si je suis un cheval, j'appuie sur le bouton cheval ou Si je suis un cheval, mon voisin appuie sur le bouton cheval.

    Citation Envoyé par imhotep_zr7s Voir le message
    Marche pas non plus avec les accolades.
    Et pour ce qui est de ta solution c'est juste pour accorder en cas féminin / masculin, et c'est pour générer des courriers dans des reports.
    Pas de programme java en amont.
    Extraction de données en SQL et positionnement des champs un report.
    On a jamais parlé de Java.
    Les fichier properties peuvent sont utilisés par les rptDesign notamment quand on a besoin de faire des traductions. Cela permet également de stocker des chaînes proprement.

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Bah non je peux pô car c'est basé sur des données métiers.
    Et effectivement c'est le test qui plante, enfin qui ne retourne pas la bonne valeur.
    Une idée ?

  12. #12
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Points : 321
    Points
    321
    Par défaut
    Citation Envoyé par BiM Voir le message
    Les accolades ne changent rien dans le cas d'une seule ligne
    Autant pour moi, je croyais avoir eu ce genre de problème que j'avais résolu par l'ajout d'accolades.

    Un appel de ce type peut simplement être fait de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reportContext.getMessage("ma.clef.de.texte");
    Si la locale n'est pas initialisée, par défaut ce sera celle du système.
    Et si le fichier de la langue en question n'existe pas, par défaut ce sera le fichier sans suffixe. Bref...

    Ce n'est pas très pertinent puisque ca revient au même de faire : Si je suis un cheval, j'appuie sur le bouton cheval ou Si je suis un cheval, mon voisin appuie sur le bouton cheval.
    Copier/coller un peu rapide

    L'utilité des fichers properties dans ton cas, est que certains mots ne suffisent pas on un féminin ou un pluriel nécessitant un peu plus de transformation que le simple ajout d'un "e" ou d'une "s".

    Par exemple : Monsieur --> Madame si il s"agit d'un courrier par exemple.

    De plus, si tu as appliquer ces transformations à un texte entier, tu ne vas pas t'amuser à transformer chaque mot un par un. Les fichiers properties peuvent réellement t'aider.

  13. #13
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Points : 321
    Points
    321
    Par défaut
    Citation Envoyé par imhotep_zr7s Voir le message
    Bah non je peux pô car c'est basé sur des données métiers.
    Et effectivement c'est le test qui plante, enfin qui ne retourne pas la bonne valeur.
    Une idée ?
    Donne nous un imprime-écran de la structure de ton dataset

  14. #14
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    j'ai fait cela :
    chaine = row["CHAMP1"];
    chaine += "1" ;
    chaine;

    et à l'affichage j'ai "null 1".
    c'est surement pour çà que le test ne fonctionne pas.
    Tu veux quoi comme copie du dataSet ?

  15. #15
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Points : 321
    Points
    321
    Par défaut
    Une copie d'écran de l'onglet "binding" de ton composant serait la bienvenue pour voir comment se nomment tes alias

  16. #16
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Quand je fais un binding après l'edit de mon dataSet c'est tout vide.
    J'ai remarqué autre chose.
    Quand je créé un text ou un dynamic text il me propose pas les champs de mon dataSet? Est-ce normal ? Y-a-t-il quelque chose que je dois faire pour avoir accès au champ ?

  17. #17
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 189
    Points : 176
    Points
    176
    Par défaut
    Citation Envoyé par imhotep_zr7s Voir le message
    j'ai fait cela :
    chaine = row["CHAMP1"];
    chaine += "1" ;
    chaine;

    et à l'affichage j'ai "null 1".
    c'est surement pour çà que le test ne fonctionne pas.
    Tu veux quoi comme copie du dataSet ?
    Ton row["CHAMP1"] vaut NULL alors à un moment.
    Faut pas chercher plus loin.
    ce NULL est surement le NULL qui indique qu'il n'y a pas de valeur pour ce champ.

    Soit tu n'as pas extrait ce qu'ill faut.
    Soit tu ne l'as pas initialisé.

    En tout cas, si ta valeur de row["CHAMP1"] est NULL, tu pourras rien faire.

  18. #18
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    Autant pour moi j'avais pas vu qu'il fallait allez dans l'onglet binding du dynamic text pour lier le dynamic text avec un dataSet.
    Un boulet je vous dit, en même temps dans l'exemple sur le site BIRT, ce n'est pas mentionné.

  19. #19
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Points : 321
    Points
    321
    Par défaut
    Citation Envoyé par imhotep_zr7s Voir le message
    Quand je fais un binding après l'edit de mon dataSet c'est tout vide.
    J'ai remarqué autre chose.
    Quand je créé un text ou un dynamic text il me propose pas les champs de mon dataSet? Est-ce normal ? Y-a-t-il quelque chose que je dois faire pour avoir accès au champ ?
    Dans ton binding, tu sélectionnes ta requête puis les champs disponibles vont apparaître.

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

Discussions similaires

  1. Creer un reseau local via l adsl
    Par loki dans le forum Développement
    Réponses: 11
    Dernier message: 12/08/2002, 00h14
  2. Creer un écran de veille
    Par Willand dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/08/2002, 12h36
  3. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50
  4. Réponses: 19
    Dernier message: 24/05/2002, 16h36
  5. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33

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