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 :

Utiliser une variable dans une MasterPage


Sujet :

BIRT

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut Utiliser une variable dans une MasterPage
    Bonjour à tous,

    Je souhaiterai utiliser une variable dans le footer d'une MasterPage.
    En fait, j'ai une requête qui me renvoi le nom de l'application sur la première page. Je voudrais stocke ce nom dans une variable et le mettre dans la Master Page pour qu'il s'affiche en bas (centré) à chaque fin de page avec le nombre de pages (déjà fait).

    J'ai déjà essayé de créer la variable et de lui affecter la valeur dans le script de la table. La variable contient bien ce qu'il faut à l'intérieur du report mais lorsque je veux afficher cette valeur dans la master page, je n'ai rien.

    Merci d'avance !

  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 type de variable
    Quel genre de variable avez vous créé?

    Merci de mettre le code que vous avez utilisé svp.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    J'ai crée une variable "report variable" (j'ai tenté avec page variable, ça ne marche pas non plus) et j'ai affecté ma valeur dans la partie script de la table comme ceci (onCreate) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vars["footer"]= this.getRowData().getColumnValue("OBJECT_NAME");

    Cela dit, le contenu de ma variable est accessible n'importe où dans le report sauf dans la masterpage...

  4. #4
    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 Persistent
    La variable faut la passer coté affichage ( Render )

    Essayer avec un setPersistentGlobalVariable

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    Comment dois-je utiliser cette nouvelle fonction ?

    J'ai voulu faire un test d'essai pour voir si la fonction marchait en écrivant ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reportContext.setPersistentGlobalVariable("footer","salut");
    Ensuite j'affiche la variable mais elle ne contient rien !
    Ma variable s'appelle footer et j'ai tenté de lui insérer la chaine de caractères salut. Je procède mal ?

  6. #6
    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 oui :)
    il y a un get aussi pour la variable , vous pouvez pas écrire la variable telle quelle.

    reportContext.getPersistentGlobalVariable("salut");

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    Vous vouliez dire :
    reportContext.getPersistentGlobalVariable("footer"); ?

    Le nom de ma variable étant footer.

    De toute façon, çà ne fonctionne pas
    Voilà ce que j'ai fait, j'espère que tu pourras détecter l'erreur

    - Création d'une variable nommée footer (Report Variable)
    - OnRender de la table Résultat renvoyant un string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reportContext.setPersistentGlobalVariable("footer","salut");
    - Insertion de la variable plus loin dans le rapport. (zone de texte)
    - OnCreate de cet élément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reportContext.getPersistentGlobalVariable("footer");

  8. #8
    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 OnCreate
    mettre votre code sur le OnCreate.

    OnRender c'est "trop tard" , le rapport est déjà généré.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    Toujours aucun résultat

  10. #10
    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
    Que met tu as la place de "salut"?
    Car si c'est le résultat d'une requête c'est normale que tu n'obtiennes rien!

    En effet, la requête est executé lorsque le tableau est généré. Donc si tu essaye d'enregistrer le résultat de la requête avant la génération (dans le onCreate par exemple) alors tu n'obtiendra aucun résultat!!!

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    Justement, je travaille avec la chaine de caractères salut pour me familiariser avec les deux fonctions set et get. Le problème c'est que ça ne marche même pas avec une String alors j'ose même pas essayer avec le résultat d'une dataset.

  12. #12
    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
    Moi j'y arrive

    Dans ton script tu ecrit dans initialize:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    reportContext.setGlobalVariable('footer', "salut")
    et dans ton masterPage tu insére un dynamic Text avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reportContext.getGlobalVariable('footer')
    Fichiers attachés Fichiers attachés

  13. #13
    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
    Attention, il y a une différence entre la solution de Stefan C et la mienne.
    Il utilise setPersistentGlobalVariable et j'utilise setGlobalVariable!

    La différence entre les 2 je ne la connais pas! Je laisse les pro y répondre

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    Merci à toi pour ton exemple !

    Déjà première découverte : setGlobalVariable (pas de Persistent).
    Ensuite ton exemple marche bien sur mon report aussi mais le problème c'est qu'après je ne peux pas modifier ma global variable. Tout ce que je fais dans la partie initialise du report fonctionne mais ensuite je veux modifier la valeur dans n'importe quel élément du report (en l'occurence une dataset pour mon cas).

    Lorsque je fais dans le OnCreate de ma table résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reportContext.setGlobalVariable('res', "sgfgfgfgfgfgf")
    La variable ne change pas de valeur !

  15. #15
    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
    Tu modifie ta variable trop tard je pense!

    Si tu modifie ta valeur dans le onPrepare de ton Dynamic Text dans le master page ceci devrait fonctionner.

    Le master Page est générer avant ton tableau apparemment!

  16. #16
    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
    Si tu veux juste afficher le résultat d'un DataSet pourquoi ne pas afficher directement dans ton Dynamic Text:

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    Oui dans le onPrepare, je peux modifier ma variable mais maintenant j'ai un autre problème c'est pour affecter la valeur du dataset et le transmettre dans le onPrepare. Je m'explique.

    Dans la partie onCreate de ma table, je stocke la valeur résultat dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vars["footer"]= this.getRowData().getColumnValue("OBJECT_NAME");
    Cela fonctionne bien car je peux ensuite afficher footer dans le report sans soucis.
    Maintenant le problème c'est que je n'arrive pas à transmettre cette variable dans le onPrepare d'un autre élément. J'ai tenté plusieurs choses comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var xxx = vars["footer"];
    reportContext.setGlobalVariable('test', xxx)
    Mais ça ne marche pas. Je pense que c'est du au fait que ma variable n'a toujours pas la valeur de la dataset. Pourtant je fais ça dans le onPrepare d'une table situé APRES la table qui renvoi la donnée dans la variable...

    Pour ta deuxième solution, comment référencer ma dataset et le champ de ma requête dans le auto dynamic text ?? Avec l'ID de l'élément ?

  18. #18
    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
    Je pense que BIRT execute d'abord tous les onPrepare puis tous les onCreate. Si c'est le cas tu n'y arrivera jamais de cette manière malheureusement!

    Pour la deuxième solution rien de plus simple! Il te suffit d'insérer un dynamic Text et dans les propriétés tu va sur binding et dans Data Set tu sélectionnes ton dataSet. pour afficher le champ que tu veux il te suffit d'afficher dataSetRow["NomChamp"]. Si ta requête te renvoie plusieurs lignes ceci va t'afficher le 1er résultat

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    Comment faire aussi compliqué quand on peut faire aussi simple !!

    Je te remercie, ta deuxième solution fonctionne parfaitement

  20. #20
    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
    De rien

    D'ailleurs pour aller encore plus vite tu as juste à faire glisser ton champ du Data Explorer (à gauche dans la liste des champs de ton dataSet) vers la où tu veux l'afficher (ici dans le footer du master Page). Et tous les paramètres et propriétés se mettrons automatiquement

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 27/07/2011, 09h50
  2. utilisation d'une variable d'une class dans une autre class
    Par the watcher dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2010, 14h01
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Réponses: 4
    Dernier message: 29/01/2008, 11h12
  5. Réponses: 1
    Dernier message: 15/02/2007, 00h24

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