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 :

Affichage de durées supérieures à 24h


Sujet :

BIRT

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Affichage de durées supérieures à 24h
    Bonjour.

    Je débute sous Birt et j'ai un soucis pour afficher des "TIME" supérieur à 24:00:00.

    J'ai ,dans ma base de données MySql, des durées de type TIME (des temps de vol) sur lesquelles je veux faire des calculs (des sommes essentiellement).

    Dans mon jeu de données, j'ai récupéré ces durées en secondes avec "TIME_TO_SEC(Temps_Vol)".

    Mes calculs (par exemple, le nombre d'heures de vol par type d'avion et par année dans un tableau croisé) se passent sans problèmes tant que les durées sont en secondes mais lorsque je veux les afficher au format TIME, j'obtient un affichage de type "30 dec. 1899 23:09:12" (valeur par défaut de Birt).
    Je fait new Date(0,0,0,0,0,row["Aggregation"],0) pour obtenir cet affichage.

    Mon soucis est que j'obtient l'affichage
    "30 dec. 1899 23:42:12" pour une durée de 1980sec alors que je voudrais "00:33:00"
    ou encore l'affichage
    "19 jan. 1900 23:29:12" pour une durée de 1729200sec alors que je voudrais
    "480:20:00".

    J'utilise Birt 2.3.2.1

    Je bloque complètement là dessus et ces durées auront une place importante des mes rapports.

    J'espère avoir été suffisamment précis.
    Merci d'avance.

    Kévin.

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Déjà le constructeur Date avec plusieurs paramètres est déprécié.

    Essaye ceci :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    importPackage( Packages.java.util );
    importPackage( Packages.java.text );
     
    sdf = new SimpleDateFormat();
     
    function monFormat(duration) {
    	d = new Date(duration*1000);
    	sdf.applyPattern("HH:mm:ss");
    	return sdf.format(d);
    }

    Mais là tu auras c'est limité à 24h également.

    Pour faire ta propre fonction, procède comme ceci :
    Code JavaScript : 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
    18
    19
    20
    21
    MIN = 60;
    HEU = MIN*60;
     
    function secToTime(secondes) {
    	// Calcul des heures
    	heures = secondes/HEU;
    	secondes -= heures*HEU;
     
    	// Calcul des minutes
    	minutes = secondes/MIN;
    	secondes -= minutes*MIN;
     
    	// Ajustement des zéros
    	if (minutes < 10)
    		minutes = "0"+minutes;
     
    	if (secondes < 10)
    		secondes = "0"+secondes;
     
    	return heures+":"+minutes+":"+secondes;
    }

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353
    Par défaut Date et DateTime
    Attention vous avez 2 types : Date et DateTime.

    Orientez vous vers le 2e : DateTime + la fonction de conversion qui va bien.

    Par exemple : DateTimeSpan.minutes(Date1,Date2) calcule le nombre de minutes entre Date1 et Date2

    Vous avez un tas d'autres fonctions pour les Add, Diff etc.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    D'abord merci à tout les deux pour vos réponse.

    Ensuite, BiM pardonne mon manque de jugeote mais je ne vois pas où je dois taper le code Java Script que tu m'a montré...

    Stefan C, je n'ai pas trouvé comment obtenir le format "HH:mm:ss" avec les fonctions que propose Birt. Je peux obtenir les heures, les minutes et les secondes mais je ne vois pas comment concaténer le tout.

    Kévin.

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353
    Par défaut Concaténation
    Bah il suffit de rajouter un .toString() sur chaque et un + pour les concaténer.

  6. #6
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Pour ma solution, il faut mettre le script dans le initialize du rapport. Regarde ceci : Comment faire une fonction Javascript utilisable dans l'ensemble du rapport ?

    Pour la solution de Stefan, il faut que ton champ soit au format DateTime et que tu n'es pas fait le calcul auparavant. D'autre part, ça implique un peu plus qu'une concaténation car si tu fais cette opération pour 7280 secondes de différence entre tes deux dates, tu auras :
    2:31:7280
    Alors que tu voudrais :
    2:1:20 voir 2:01:20

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci à tout les deux, j'y suis arrivé .

    Vos deux solutions fonctionnent mais je suis resté sur celle de BiM car celle de Stefan demande trop de calculs et l'utilisateur final, qui utilisera Birt après mon départ (car je suis en stage), aura plus de facilité s'il n'a que le nom d'une fonction à taper.

    Il ne me reste plus qu'à régler quelques détails pour le calcul des heures sur la fonction de BiM car pour le moment j'obtiens des résultats comme :
    3553,5:00:00

    Merci encore à vous .

  8. #8
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Il faut rajouter parseInt(...) lors de la division :
    Code JavaScript : 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
    18
    19
    20
    21
    MIN = 60;
    HEU = MIN*60;
     
    function secToTime(secondes) {
    	// Calcul des heures
    	heures = parseInt(secondes/HEU);
    	secondes -= heures*HEU;
     
    	// Calcul des minutes
    	minutes = parseInt(secondes/MIN);
    	secondes -= minutes*MIN;
     
    	// Ajustement des zéros
    	if (minutes < 10)
    		minutes = "0"+minutes;
     
    	if (secondes < 10)
    		secondes = "0"+secondes;
     
    	return heures+":"+minutes+":"+secondes;
    }

  9. #9
    Candidat au Club
    Homme Profil pro
    Superviseur de Hotline
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Superviseur de Hotline

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème de temps > 24:00:00
    Bonjour,

    Nouveaux sur BIRT à mon tour, je réalise un report client sur des temps de traitement lié à une base ticketing (GLPI).
    Ce problème m'impacte beaucoup étant donné que je ne sors pratiquement que des graphs sur des temps de traitement...
    J'ai essayé vos deux techniques sans succès... celle de BIM me parait intéressante mais la fonction java script utilisable dans tout le rapport ne change rien... (peut être je m'y prends mal...)
    J'ai essayé de contourner le problème en sortant mes temps en chaine de caractères (BIRT les affiche bien dans la requête) mais inexploitable dans mes graphs...
    Mes temps sont de types hh:mm:ss

    Si vous avez des informations complémentaires, aides...
    Merci par avance.

    Cordialement,

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

Discussions similaires

  1. [JExcel] Affichage de durée supérieure à 24h
    Par nelsonimor dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 09/09/2011, 15h20
  2. [AC-2010] Calcul de durées supérieures à 24h
    Par clickandgo dans le forum IHM
    Réponses: 8
    Dernier message: 06/01/2011, 13h54
  3. TimePicker supérieur à 24h ?
    Par KRis dans le forum Composants VCL
    Réponses: 5
    Dernier message: 04/02/2008, 11h03
  4. Réponses: 2
    Dernier message: 09/11/2006, 09h59
  5. [VBA-E] somme d'heures supérieures à 24h
    Par bandit boy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/05/2006, 15h02

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