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 :

Concaténer plusieurs champs avec conditions


Sujet :

BIRT

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Concaténer plusieurs champs avec conditions
    Bonjour,

    Je cherche à remonter dans un champ données de table, plusieurs champs de dataset en les concaténat de façon à ne pas prendre trop de place sur le rapport car les champs ne sont jamais tous remplis.
    Donc j'ai voulu faire dans mon champ données une suite de If else, mais je n'arrive à aucun résultat:
    Voici grossièrement ce que je tente d'écrire (je sais c'est pas beau! doit sûrement manquer des choses)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (dataSetRow["regess"]==null)
        var reg1=' '
    else var reg1=dataSetRow["regess"]
     
    if (dataSetRow["regatex"]=='OUI')
        var reg2='ATEX'
    else var reg2=' '
     
    return reg1+reg2
    Si quelqu'un peut m'aider, merci d'avance,

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Points : 836
    Points
    836
    Par défaut
    Salut, il ne faut déclarer qu'une fois les var, et pas à l'intérieur des "if", sinon les variables sont hors de portée pour le return. donc au début de la fonction:
    Ou est executé ce code? Si c'est dans une fonction OK, mais si c'est dans un évènement du rapport, le "return" n'existe pas. Pour modifier la valeur affichée dans champs data:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setDisplayValue(reg1+reg2);
    dans un champs texte, dynamic text ou label:

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci pour ces infos,
    j'ai donc écrit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var reg1='', reg2='';
    if (dataSetRow["regess"]==null)
        reg1='';
    else reg1=dataSetRow["regess"]
     
    if (dataSetRow["regatex"]=='OUI')
        reg2='ATEX'
    else reg2=' '
     
    this.setDisplayValue(reg1+reg2);
    mais toujours pas de résultat, c'est dans un champ données, pas une fonction,
    Est-ce que je progresse ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Points : 836
    Points
    836
    Par défaut
    C'est mieux, mais il faut quand même être plus explicite sur le problème, car "pas de résultat" ça n'aide pas énormément: la cellule de donnée apparait avec une valeur vide? Elle apparait avec le résultat initial sans tenir compte du remplacement? Il y a un message d'erreur dans le rapport? Un message d'erreur dans les logs? Le code est ajouté dans l'expression du champs données, ou dans un évènement de ce champs (onCreate, onRender, etc..)?

    Sur ce que je comprends, le script est ajouté directement dans l'expression du champs, donc remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setDisplayValue(reg1+reg2);
    par (sans "return"!):
    Sinon dés qu'on commence à coincer sur des scripts, il est indispensable d'apprendre à utiliser la "Debug perspective" d'Eclipse, qui est faite pour ça et permet de voir tout de suite où est le problème.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    J'ai remplacé

    this.setDisplayValue(reg1+reg2);

    par

    reg1+reg2;

    et là ça marche, merci beaucoup je vais continuer car j'ai d'autres conditions à ajouter, on va voir,

    Je donne des nouvelles dès que possible,
    Merci

Discussions similaires

  1. concaténer un champ avec sa condition dans la clause where
    Par zineb_cerisette dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/01/2012, 15h10
  2. [AC-2007] Concaténer plusieurs champs d'une table dans une requête avec format date
    Par MelaAllIn dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/08/2011, 10h05
  3. Concaténer plusieurs champs avec des valeurs uniques
    Par stefposs dans le forum VBA Access
    Réponses: 10
    Dernier message: 30/05/2007, 17h42
  4. Requête sur plusieurs champs avec LIKE
    Par zestrellita dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/04/2007, 14h58
  5. Réponses: 6
    Dernier message: 22/03/2007, 18h34

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