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 :

Nombre de jours par mois par rapport à deux dates


Sujet :

BIRT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Par défaut Nombre de jours par mois par rapport à deux dates
    Bonsoir,

    J'ai un état ou je récupère deux dates.
    Je souhaiterais, si possible, récupérer le nombre de jour exact par mois dans des datas (au nombre de 12).

    Ainsi par exemple, si la date de début est le 10 janvier est la date de fin le 15 novembre, j'aimerais pouvoir alimenter les datas de 1 à 11 avec le nombre de jour exact ( data 1 : 21 jours, data 2: 28 jours... data 11 : 15 jours, data 12 : 0 jours)
    J'ai chercher avec DateDiff... mais je ne trouve la solution.

    Merci pour votre aide

  2. #2
    Membre émérite
    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
    Par défaut
    Salut, voici une piste:

    - récupérer le nombre de mois à traiter avec BirtDateTime.diffMonth(d1,d2)
    - traiter le cas particulier du mois de d1 qui est "entamé"
    - pour chaque mois restant, faire une boucle et récupérer le nombre de jours avec une petite astuce:

    la clé est d'utiliser le jour 0. En javascript, 0 est une valeur spéciale retournant le dernier jour du mois. Par exemple l'expression suivante retourne le nombre de jours d'avril:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BirtDateTime.day(new Date(2014,4,0))

  3. #3
    Membre très actif
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Par défaut
    Bonsoir,

    Merci pour ces éléments de réponses.
    Je mets ces scripts dans chaque expression de data ?
    Je ne vois comment écrire cette boucle une fois les mois récupérer.
    Ma version de BIRT ne comporte pas Birtdatetime
    merci

  4. #4
    Membre émérite
    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
    Par défaut
    Ah je n'avais pas compris que tu souhaitais mettre les 12 valeurs en colonne. Dans ce cas il vaut mieux créer une fonction qui fait le gros du boulot, et l'invoquer dans chacun des data (des colonnes calculées j'imagine?)

    La fonction ressemblerait à quelquechose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function getDays(d1,d2,m){
    	var M1=BirtDateTime.month(d1),
    	M2=BirtDateTime.month(d2),
    	Y1=BirtDateTime.year(d1);
     
    	if (m<M1 || m>M2){
    		return 0;
    	}else if(m>M1 && m<M2){
    		return BirtDateTime.day(new Date(Y1,m-1,0));
    	}else if(m==M1 && m==M2){
    		return BirtDateTime.diffDay(d1,d2);
    	}else if(m==M1){
    		return BirtDateTime.day(new Date(Y1,m-1,0))- BirtDateTime.day(d1);
    	}else if(m==M2){
    		return BirtDateTime.day(d2);
    	}	
    }
    On peut coller cette fonction dans le script "initialize" du rapport. Par exemple pour obtenir le nombre de jours pour avril on aurait, en supposant que les 2 dates en question sont des paramètres de rapport:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getDays(params["d1"].value,params["d2"].value,4);

  5. #5
    Membre très actif
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Par défaut
    Merci pour la fonction je vais tester.

    Par contre les dates ne proviennent pas d'un paramètre. Il s'agit de 2 dates qui proviennent du dataset donc du sql.
    Je veux donc invoquer dans des datas sur le layout.

    Est-ce que ma version de BIRT 2.2.6 je crois va accepter Birtdatetime ?

    merci pour les infos je reviendrai peut-être, si je n'y arrive pas.

  6. #6
    Membre très actif
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Par défaut
    Bonjour,

    J'ai un problème de java.math.BigDecimal but one of its value is null

    Comment résoudre ce problème ?

    merci

Discussions similaires

  1. Nombre de jours par mois par rapport à deux dates
    Par jopont dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/03/2014, 08h51
  2. Calcul du nombre de jours d'absence par mois
    Par gwena2b dans le forum Deski
    Réponses: 8
    Dernier message: 15/05/2013, 12h57
  3. Réponses: 0
    Dernier message: 31/05/2011, 19h15
  4. [MCD] Nombre d'heures travaillées par mois par année par compte
    Par Tidus159 dans le forum Schéma
    Réponses: 9
    Dernier message: 11/03/2011, 12h20
  5. Réponses: 1
    Dernier message: 14/09/2007, 11h09

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