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 :

Récupérer la valeur de la ligne précédente


Sujet :

BIRT

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Récupérer la valeur de la ligne précédente
    Bonjour,

    je cherche désespérément a calculer la différence entre deux dates dans un composant table. J'ai un tableau avec en ligne des dates et je voudrait ajouté une colonne qui calcule le nombre de jours de différence entre les deux lignes :

    date | nb jours écart
    01/01/2010 | 0
    15/01/2010 | 14

    Pour faire cela j'ai besoin d'accéder à la valeur de la ligne 1 lorsque je suis à la ligne 2.

    J'ai créé une variable vars['dateBefore'] mais je n'arrive pas à déterminer la zone ou je dois l'alimenter.

    Si je le fais sur le 'Onfetch' de mon Dataset j'obtiens la dernière valeur du tableau.

    J'ai aussi testé de le faire directement dans la cellule,j'ai donc une cellule avec a l’intérieur 3 éléments "données" (pour test):
    - la 1ère 'data' : affiche la valeur précédente :
    vars["dateBefore"];
    - la 2ème 'data' : calcule la différence entre les deux dates
    BirtDateTime.diffDay(vars["dateBefore"], dataSetRow["interest_date"]);
    - la 3ème data : écrase la valeur before avec la valeur courante
    var dateBefore = dataSetRow['interest_date'];

    J'obtiens le résultat suivant

    date | nb jours écart
    01/01/2010 | vide
    0
    01/001/2010
    15/01/2010 | 01/01/2010
    0
    15/01/2010

    J'ai bien testé la fonction de calcul de différence entre deux dates, elle marche bien avec des données en dur.

    Si l'un de vous avez des idée je suis preneur.

    Merci de votre aide

  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,

    C'est difficile de bien voir le résultat affiché car ça part sur plusieurs lignes, mais je pense que c'est une question de formatage de la variable. Par exemple on voit qu'il y a une date 01/001/2010 qui se promène au milieu, ça doit gêner la fonction dateDiff qui attend plutôt le format classique yyyy-MM-dd.

    Essaie en affectant ta variable comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vars["dateBefore"]=Formatter.format(dataSetRow['interest_date'],"yyyy-MM-dd");
    EDIT: j'utilise la version 4.3, je ne me souviens plus de quand la fonction Formatter a été introduite. Il faut aussi bien sûr que interest_date soit déclaré comme type Date dans birt

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci de ta réponse.

    la date est bien formatée, c'est moi qui me suit trompé en rédigeant le post (ci joint quelques imprime écran).

    C'est la valeur de la date before qui n'est pas bonne au moment du calcul, elle est égale à la valeur courante. je ne mets pas à jour la variable before correctement, il doit y avoir une autre façon.

    merci de votre aide.
    Images attachées Images attachées

  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
    La description est on ne peut plus précise
    En apparence ça devrait marcher, mais l'ordre interne de calcul des champs data d'une même ligne est un peu flou: avec un petit rapport d'essai je tombe sur le même problème que toi.

    Donc plutôt que de mettre la variable à jour dans un champs data, on peut la mettre à jour dans le script "onCreate" d'un élément situé aprés l'élément qui calcule le nombre de jours, et là ça fonctionne. Par exemple, le champs data "After" de ton exemple devrait faire l'affaire, ou sinon une colonne supplémentaire cachée à droite.

    Donc cliquer sur cet élément->onglet script->onCreate et mettre la formule pour affecter la nouvelle date précédente. Dans l'exemple joint, je l'ai mis sur le script onCreate de l'élément data de la colonne "Diffday":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vars["previousDate"]=row["ORDERDATE"];
    Si tu rencontres un problème ci joint un petit rapport réalisé sur la base d'essai de BIRT, il fonctionne tel quel dans le designer.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    De la balle merci, ca marche nickel.

    c'est exactement ce que je cherchais

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

Discussions similaires

  1. Récupérer une valeur de la ligne précédente
    Par oOBaalberithOo dans le forum SQL
    Réponses: 2
    Dernier message: 05/06/2008, 09h27
  2. [DOM] Comment récupérer la valeur d'une ligne cliquée dans un <DIV>?
    Par insane_80 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/07/2007, 16h11
  3. Réponses: 7
    Dernier message: 29/06/2007, 15h39
  4. Réponses: 5
    Dernier message: 03/04/2007, 11h08
  5. Récupérer la valeur d'une ligne dans une procédure stockée
    Par mobscene dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 07/12/2006, 19h29

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