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] Changer de dataset dynamiquement


Sujet :

BIRT

  1. #1
    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 [2.2.2] Changer de dataset dynamiquement
    Bonjour à tous,

    Est-il possible de changer le jeu de données (dataset) d'un tableau dynamiquement ? Par dynamique, j'entends utiliser un jeu de données différents selon des critères bien définis. Je voudrais par exemple dans la zone de script "initialize" ou "beforeFactory" changer le nom de la source de données.

    Je pourrais dans le pire des cas créer n tableau et utiliser la propriété "visibility" mais cela surcharge mes rapports. C'est pour cela que je souhaite utiliser uniquement 1 seul tableau et n jeu de données.

    Je tiens à préciser que mes différents jeux de données retournent tous les mêmes champs (même nom et même nombre).

  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
    Tu veux changer le DataSet ou le DataSource directement ?

    Parce que c'est plus facile de changer le DataSource cependant, ce n'est pas impossible de modifier le DataSource affecté au DataSet.

  3. #3
    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 librairies
    Vous pouvez créer une librairie ( rptlibrary ) et y stocker les datasources et les datasets.

    A l'execution , vous pouvez modifier le XML su rapport BIRT pour le faire hériter d'un dataset ou autre de cette librairie. ( événtuellement en fonction de certains params )

    les tags de la librairie sont en clair au début du rapport BIRT vu XML

  4. #4
    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
    cucubau123,

    Je voudrais modifier le dataset d'un item à partir des fonctionnalités de "script" fournies par Birt.

    Par exemple dans la méthode "beforeFactory" d'un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(variable == "val1") {
       this.setDataSetName("DS1");
    }
    else if(variable == "val2") {
       this.setDataSetName("DS2");
    }
    else if(variable == "val3") {
       this.setDataSetName("DS3");
    }
    ...

  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
    Bonjour Erwan,

    Le DataSet associé au tableau ou le DataSource associé au DataSet ?

  6. #6
    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
    BiM,

    je souhaite uniquement modifier la source de données d'un composant de rapport (tableau, ...) et non d'un jeu de données.

    Par exemple, j'ai 3 datasets nommés "DS1", "DS2", "DS3" me retournant tout les 3 les champs suivants : COD, LIB, NB_RES. Chaque dataset a une requête bien distincte. En effet, chaque dataset utilise des tables différentes mais retourne les mêmes noms de champs.

    Dans mon rapport, suivant les paramètres saisis, je dois afficher les résultats de telle ou telle requête. Au lieu de faire 3 tableaux dans mon rapport et de jouer avec les propriétés "visibility" de chaque tableau, je souhaite créer un seul tableau et modifier la source de données de ce tableau en fonction des paramètres saisis.

  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
    Essayes de mettre dans le onCreate du tableau :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setUserPropertyValue("dataSet","nom de ton DataSet");

  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
    Merci pour ta réponse BiM, malheuresement cela ne semble pas fonctionner. J'ai essayé dans le beforeFactory et là j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The user property with the name "dataSet" already exists
    Je pense que c'est à partir de cette méthode que l'on peut modifier le jeux de données. On peut d'ailleurs effectuer ce genre d'action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    this.removeDataBindings();
    this.addDataBindings("dtb", 50);
    ...
    ds = this.getUserProperty("dataSet");

  9. #9
    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
    Dans ce cas, il faudrait que tu définisses par défaut le DataBinding a aucun, peut être que dans ce cas, ca fonctionnerait.

    D'autre part, je ne comprend pas d'où viennent tes autres méthodes.

  10. #10
    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
    Dans ce cas, il faudrait que tu définisses par défaut le DataBinding a aucun, peut être que dans ce cas, ca fonctionnerait.
    Je vais essayer.
    Citation Envoyé par BiM Voir le message
    D'autre part, je ne comprend pas d'où viennent tes autres méthodes.
    Sous Eclipse dans la fenêtre "script", lorsque tu utilises la commande "CTL+SPACE" tu disposes de la complétion. Tapes "this." puis utilises cette commande et tu verras la liste des méthodes disponibles pour manipuler le composant (=ReportItem). Tu peux également utiliser cette commande en dehors du "this" pour manipuler le contexte par exemple.

  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
    Wah, merci, je savais même pas que la complétion était dispo sous le designer BIRT Génial !

    Ca ne marche pas ta technique d'ailleurs ?

  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
    Wah, merci, je savais même pas que la complétion était dispo sous le designer BIRT Génial !
    Oui, c'est relativement pratique

    Citation Envoyé par BiM Voir le message
    Ca ne marche pas ta technique d'ailleurs ?
    De quelle technique parles-tu ?

  13. #13
    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
    Ceci :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.removeDataBindings();
    this.addDataBindings("dtb", 50);

  14. #14
    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
    Non, çà ne résout pas mon problème. Il s'agit uniquement d'actions possibles via l'utilisation du "this". C'était juste pour te montrer que l'on devait utiliser "this" au lieu de "table".

  15. #15
    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
    D'accord, en fait, ca correspond à deux objets différents : table à un objet de type ITable (ou ITableInstance selon les méthodes) et this de type TableEventAdapter.

    Il faudrait idéalement récupérer un objet de type TableHandle qui contient la méthode setDataBindingReference(...).

  16. #16
    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
    Dans le beforeFactory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    table = reportContext.getReportRunnable().designHandle.getDesignHandle().findElement("TableName");
    table.setProperty("dataSet", "DatasetName" );

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

Discussions similaires

  1. [VB6] Changer le TabIndex Dynamiquement
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 13/09/2007, 10h21
  2. Changer un lien dynamiquement en lisant une base mysql
    Par AIexis dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/01/2007, 15h26
  3. [FLASH 8] Changer label bouton dynamiquement dans une boucle
    Par Malau dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 03/05/2006, 16h55
  4. Réponses: 4
    Dernier message: 20/09/2005, 14h50
  5. [C#] Changer l'icone dynamiquement
    Par Piolet dans le forum Windows Forms
    Réponses: 16
    Dernier message: 25/08/2004, 14h08

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