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

Cognos Discussion :

Report Studio - Fonction if then else à partir d'une donnée calculée


Sujet :

Cognos

  1. #1
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Par défaut Report Studio - Fonction if then else à partir d'une donnée calculée
    Bonjour!!

    Voici mon problème... Je tente d'afficher, à partir de la date d'échéance, le nombre de jours de retard pour une série de tâches, et indiquer 'N/A' lorsque la tâche en question n'est pas en retard.

    Pour l'instant, j'ai créé une nouvelle donnée élémentaire qui fonctionne bien, 'Days Overdue' qui se calcule comme suit:

    _days_between ([Due Date]-current_date)

    Ensuite, lorsque j'essaie d'ajouter un calcul de la requête afin d'afficher le nombre de jours seulement dans les cas ou la tâche est en retard, je n'y arrive pas.... Voici ce que j'ai essayé:

    IF ( [Calcul Days Overdue]<0 ) THEN
    ( [Calcul Days Overdue] )
    ELSE
    ( 'N/A' )

    Quelqu'un peut m'aider??

    Merci beaucoup!!

  2. #2
    Membre éprouvé Avatar de tfc3146
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2009
    Messages : 79
    Par défaut
    Bonsoir,

    La syntaxe a utilisé sous report studio est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CASE ...
    WHEN condition1 THEN expression
    ...
    ELSE
    END
    Il ne vous reste plus qu'à transposer votre condition avec un CASE, et ça devrait fonctionner

  3. #3
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour, (ou bonsoir)

    J'aurais tendance a penser qu'il s'agit d'un problème lié au type de donnée renvoyée par tel ou tel champs ou résultat.
    Certes, je ne sais pas ce qui se passe vraiment, car
    je n'y arrive pas
    n'est pas une information très "expressive": quelle erreur, qu'est ce qui se passe exactement ?
    Bref, en attendant, j'aurais envie de demander confirmation:
    . a vue de nez, je dirais que [Calcul Days Overdue] est une valeur numérique, et 'N/A' (la, il n'y a pas beaucoup de chance que je me trompe) alphabétique uniquement.
    J'aurais tendance a dire que le problème se trouve ici, car pour un champs tu demandes a Cognos de renvoyer tantôt une valeur texte,tantôt numérique; ca peut paraître "con" mais je ne suis pas sur que cela passe, Oracle le ferait tout seul de lui même (le "cast"), mais je crois avoir déjà eu des soucis avec ce genre de choses dans Cognos (dans un DataItem, ou une Variable, je ne sais plus).

    Si tel est bien le cas, et que [Calcul Days Overdue] est bien numérique, il suffit pour tester de renvoyer -1 a la place de 'N/A' et l'éventuel message d'erreur devrait ne plus apparaitre.
    (il reste juste a "masquer" l'éventuelle valeur -1 (ou autre) avec une variable de style)

    @+

  4. #4
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Par défaut
    Bonjour!!

    Ce matin j'ai tenté de remplacer le 'N/A' par une valeur numérique, et je reçois toujours un message d'erreur.... Voici ce qui s'affiche:

    UDA-QOS-0006 Erreur
    UDA-SQL-0460 Une erreur s'est produite pendant le traitement local.
    UDA-EE-0020 The ''Expression Engine'' node ''_days_between'' requires more operands.

    QE-DEF-0459 CCL Exception
    RQP-DEF-0177 Une erreur s'est produite lors de l'exécution 'sqlPrepareWithOptions' état='-239'.

    UDA-SQL-0460 Une erreur générale s'est produite penadant le traitement local.
    UDA-EE-0020 The ''Expression Engine'' node ''_days_between'' requires more operands.

    RSV-VAL-0004 Impossible de trouver les informations de requête pour l'élément GCC Number

    RSV-VAL-0004 Impossible de trouver les informations de requête pour l'élément
    ....... ainsi de suite pour chacun de mes éléments....

    Serait-ce possible que ce soit l'utilisation de Current_date dans ma donnée élémentaire qui cause cette erreur??

    Merci beaucoup pour votre aide!!

  5. #5
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Désolé, je n'avais pas prêté attention a la fonction qui était utilisée.
    Voici ce que dit Cognos:
    _days_between ( date_exp1, date_exp2 )
    Returns a positive or negative number representing the number of days between "date_exp1" and "date_exp2". If "date_exp1" < "date_exp2" then the result will be a negative number.
    La fonction attends 2 dates, il semble que tu passes qu'une seule (une date moins un autre ?, il ne va pas aimer).

    C'est déjà cela a corriger en premier.

    @+

  6. #6
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Par défaut
    Bonjour Sunchaser!!

    En fait, lorsque j'utilise uniquement cette fonction, tout fonctionne correctement, mais c'est plutôt lorsque je tente d'utiliser cette donnée élémentaire dans une autre fonction que j'obtiens des messages d'erreur....

    Comment puis-je faire pour déterminer le nombre de jours de retard d'une tâche autrement??

    Merci énormément!!

  7. #7
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Chére Cynthia1987

    Je ne sais pas ou je ne suis pas sur de comment tu utilises la fonction "_days_between ".
    Si je fais un test comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _days_between ([THIS_DAY], [TWO_DAYS])
    Ou [THIS_DAY] = sysdate, et [TWO_DAYS] = sysdate -2 (donc respectivement aujourd'hui et il y a 2 jours), j'ai bien 2 qui s'affiche. Le rapport tourne, ok, etc.

    Si je créé un autre DataItem, avec dedans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IF ( [lap_days] < 0 ) THEN
        ( [lap_days] )
    ELSE 
        ( -1 )
    Ca marche comme attendu...
    (Et de ce fait je confirme que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IF ( [lap_days] < 0 ) THEN
        ( [lap_days] )
    ELSE 
        ( 'NA' )
    ne fonctionne pas / ne valide pas
    pour les raisons exprimées dans une réponse précédente.

  8. #8
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Par défaut
    Bonjour Sunchaser!!

    Oui je crois en effet que j'avais dû faire une erreur de syntaxe car tout fonctionne superbement maintenant !!!

    Merci beaucoup pour ton aide précieuse!!!

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

Discussions similaires

  1. [XL-2010] Problème sur la fonction IF THEN ELSE
    Par ValerieH34 dans le forum Excel
    Réponses: 2
    Dernier message: 18/05/2015, 16h22
  2. [XL_2010] Problème fonction if then else
    Par Teva29 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 01/09/2014, 17h26
  3. Réponses: 1
    Dernier message: 11/01/2012, 15h48
  4. [8.1][Report Studio] Fonctions
    Par Ne0zenith dans le forum Cognos
    Réponses: 0
    Dernier message: 07/08/2008, 11h47
  5. fonction if/then/else dans une requete Access
    Par steve38 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/12/2006, 17h09

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