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

Développement de jobs Discussion :

tmap avec expression en if .. else


Sujet :

Développement de jobs

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 39
    Par défaut tmap avec expression en if .. else
    Bonjour, utilisateur occaionnel de Talend, je rencontre le problème suivant:

    soit deux dates en entrée de mon tmap
    DatePub (toujours renseignée)
    DateEffet (souvent null)

    et je voudrais obtenir une DateSortie
    tel que (si dateEffet est null alors DateSortie = DatePub+1jour) else (DateSortie=DateEffet)

    J'ai bien essayé un truc du genre dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (Relational.ISNULL(row1.DateEffet))
    	TalendDate.addDate(row1.DatePubli,"dd/MM/yyyy",1,"dd");
    else
        row1.DateEffet;
    Mais j'obtiens des erreurs, que je n'arrive pas a interpréter (mes connaissances de JS sont probablement insuffisantes)

    Merci d'avance de m'orienter vers une piste.

    Cordialement

    Edit: manifestement, j'étais resté sur l'idée d'une utilisation avec une syntaxe javascript, mais en reprenant la doc, je ne vois que java (ou je suis encore moins calé )

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2012
    Messages : 56
    Par défaut
    Salut,

    Tu peux utiliser la notation ternaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Relational.ISNULL(row1.dateEffet) ? TalendDate.addDate(row1.datePubli,"dd/MM/yyyy",1,"dd") : row1.dateEffet
    C'est exactement pareil qu'un bloc if / else hormis la syntaxe.

    Bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 39
    Par défaut
    Effectivement, ça marche avec la notation ternaire alors que ca ne marche pas avec la syntaxe if else!

    Bref, c'est résolu, mais je ne comprends pa bien pourquoi

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur d'études entrepôt de données
    Inscrit en
    Mars 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'études entrepôt de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2006
    Messages : 104
    Par défaut
    Citation Envoyé par meles Voir le message
    Effectivement, ça marche avec la notation ternaire alors que ca ne marche pas avec la syntaxe if else!

    Bref, c'est résolu, mais je ne comprends pa bien pourquoi
    Parce que la notation ternaire est faite pour être utilisée dans une opération d'affectation :

    mavariable = condition ? vrai : faux;

    Dans Talend, ce que l'on voit, dans les tMap, dans la première colonne (colonne expression) de la table de sortie, correspond au le coté droit d'une opération d'affectation... (oui, c'est tordu à expliquer...)

    Si pour le champ "monTexte" de la table out1, tu écris comme expression: " row1.monTexte", dans le code Java, il sera indiqué :

    out1.monTexte = row1.monTexte;

    Donc, si tu écris un if/else, tu te retrouve avec ceci :

    out1.monTexte = if(machin) {truc} else {brol} ;
    Et ca, Java ne le comprend pas...


    Est-ce clair ? (parce que je reconnais avoir du mal !)

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

Discussions similaires

  1. [RegEx] Pb avec expressions regulieres
    Par Oreily dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2006, 01h34
  2. [C#] Caractères hexadécimal avec expressions régulières
    Par shinchan dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/01/2006, 11h41
  3. [RegEx] Rechercher et remplacer plusieurs occurences avec expression
    Par nabab dans le forum Langage
    Réponses: 2
    Dernier message: 12/12/2005, 17h12
  4. Probleme avec la fonction IF ELSE
    Par guillaumeIOB dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/12/2005, 11h52
  5. probleme avec expression reguliere
    Par naourass dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/11/2005, 12h15

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