Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Débuter
Débuter Forum d'entraide pour débuter avec Business Object
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/11/2007, 09h44   #1
Invité régulier
 
Inscription : septembre 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 31
Points : 9
Points : 9
Par défaut [BO XI] Différence d'heure

Bonjour,

Je cherche à faire une différence entre deux heures que je récupère pour pouvoir calculer un temps de traitement. Est- ce possible avec BO ?

Merci d'avance de vos réponses.
FloLens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 10h58   #2
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Bonjour,
Quel type de données ?
Date ?
01/01/1900 18:42:25 ou 20/11/2007 10:59:00

Texte ?
18:42 ou 18h42 ou "20/11/2007 10:59" ou n'importe quoi d'autre
Et le résultat en HH OU MINUTES OU SECONDES OU DECIMALES ?
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 17h31   #3
Invité régulier
 
Inscription : septembre 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 31
Points : 9
Points : 9
Citation:
Envoyé par BRUNO2R Voir le message
Bonjour,
Quel type de données ?
Date ?
01/01/1900 18:42:25 ou 20/11/2007 10:59:00

Texte ?
18:42 ou 18h42 ou "20/11/2007 10:59" ou n'importe quoi d'autre
Et le résultat en HH OU MINUTES OU SECONDES OU DECIMALES ?
Bonjour,

En fait je voudrai faire la différence entre deux heures, mais pas sur la date car c'est toujours la même (date du jour).
Dans l'univers j'ai une variable qui me permet de récupérer l'heure (HH:mm:ss) qui m'intéresse. De celle-ci je peux former des objets pour récupérer uniquement l'heure (format HH) , uniquement les secondes (format ss) mais impossible de récupérer uniquement les minutes. En effet si je mets dans le format : mm, je vais récupérer le mois ! Il y a une cependant une possibilité, en faisant un objet de format Hmm, ou je vais bien avoir mes minutes, mais précédées d'un H (ex: H39 , si j'ai 39 minutes dans mon heure). Mais de là je n'arrive pas à retirer ce H... Si j'y parvenais il me suffirait alors de créer de nouvelles variables pour convertir l'heure en nombre de secondes, pour ensuite faire une différence de secondes et pour finir repasser un mode "heure", mais c'est un peu farfelu je trouve.
(Mon résultat final doit être en HEURE:MINUTES:SECONDES)
N'existe-t-il pas de méthodes moins endurantes et donc plus simples ?

Merci.
FloLens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 07h59   #4
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Salut,
Pourrais tu me dire ce que tu as comme fonctions de date dans BO XI (je n'ai que BO 6.5 sous la main) avant que je ne te propose une solution basée sur un traitement de chaîne de caractère.
Merci.
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 16h35   #5
Invité régulier
 
Inscription : septembre 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 31
Points : 9
Points : 9
Citation:
Envoyé par BRUNO2R Voir le message
Salut,
Pourrais tu me dire ce que tu as comme fonctions de date dans BO XI (je n'ai que BO 6.5 sous la main) avant que je ne te propose une solution basée sur un traitement de chaîne de caractère.
Merci.
Salut, les fonctions dates disponibles dans BO XI sont:
- Année
- DateActuelle
- DateRelative
- DernierJourDeLaSemaine
- DenierJourDumois
- EnDate
- HeureActuelle
- JoursEntre
- Mois
- MoisEntre
- NomDuJour
- NuméroDuJourDeAnnée
- NuméroDuJourDeLaSemaine
- NuméroDuJourDuMois
- NuméroDuMoisDeAnnée
- Semaine
- Trimestre
... bref, comme tu pourras le constater, pas grand chose en relation avec uniquement la notion d'heure !
FloLens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 16h52   #6
Membre du Club
 
Inscription : octobre 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 64
Points : 52
Points : 52
J'ai une ou deux idée qui pourront peut etre te menner sur une autre voix.

Si tu utilise oracle tu peux peut etre calculer ce temps en utilisant une requete de ce genre:

Code :
1
2
3
4
5
6
7
8
9
10
 
WITH t AS (SELECT
  to_date('07-03-2006 10:25:00 PM','DD-MM-YYYY HH:MI:SS AM') d1,
  to_date('08-03-2006 10:24:00 PM','DD-MM-YYYY HH:MI:SS AM') d2 FROM dual)
SELECT decode(sign(d2-d1),-1,'-')||
       to_char(abs(extract(day FROM ((d2 - d1) day TO second))*24 +
            extract(hour FROM ((d2 - d1) day TO second))),'FM999999900')||
  ':'||to_char(abs(extract(minute FROM ((d2 - d1) day TO second))),'FM00')||
  ':'||to_char(abs(extract(second FROM ((d2 - d1) day TO second))),'FM00')
"D2-D1" FROM t
Cette requette marche mais faudra changer le format des dates qui est au format AM/PM pour les heures. Pour le format sur 24 heures par jours:

Code :
1
2
3
4
5
6
7
8
9
10
 
WITH t AS (SELECT
  to_date(HDEBUT,'YYYY-MM-DD HH24:MI:SS ') d1,
  to_date(HFIN,'YYYY-MM-DD HH24:MI:SS ')d2,HDEBUT,HFIN FROM cnx_voip_mm)
SELECT decode(sign(d2-d1),-1,'-')||
       to_char(abs(extract(day FROM ((d2 - d1) day TO second))*24 +
            extract(hour FROM ((d2 - d1) day TO second))),'FM999999900')||
  ':'||to_char(abs(extract(minute FROM ((d2 - d1) day TO second))),'FM00')||
  ':'||to_char(abs(extract(second FROM ((d2 - d1) day TO second))),'FM00')
"D2-D1",t.HDEBUT,t.HFIN FROM t

Si tu es en sql server tu peux essayer la fonction datediff:
Code :
datediff(dd,dbo.CLI_RUM.DAT_ENT_UM,dbo.CLI_RUM.DAT_SOR_UM)
ps: faudra surement changer le premier argument, je te laisse regarder la documentation car je ne fais plus de sql server depuis longtemps.

ps: Bon courage...

Aitone : merci de penser aux balises codes
Greg : Ok, je cherchai justement comment faire, merci...
dermenji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 18h07   #7
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
On est pas , si j'ai bien compris, en SQL à la carte mais avec des DateHeure ramenées par un objet d'Univers.
Donc on va chercher la solution dans BO
Mais comme nous n'avons pas Extract()
qui n'est d'ailleurs pas non plus en Oracle 8

Partons de l'idée que la Date 1 qu'on appellera l'Objet DTE1 (pour raccourcir le code dans cette page) est 21/11/2007 17:35:06

Pour facilité lecture et clarté chaque étape sera abordée par une formule nommée en variable utilisée pour la suite

On va commencer par transformer en chaîne de caractères la zone qui nous intéresse.
Code :
1
2
a = FormatDeDate(<DTE1>,"HHmmss")
Résultat 173506
Extraction et conversion en secondes des heures
Code :
1
2
b = EnNombre(Gauche(<a>, 2) )* 3600
Résultat 61200
Idem pour les minutes en secondes
Code :
1
2
c = =EnNombre(SousChaîne(<a>, 3, 2) )* 60
Résultat 2100
enfin les secondes
Code :
1
2
d =  = EnNombre(Droite(<a>, 2) 
Résultat 6
La Somme fait donc
61200 + 2100 + 6 = 63306 secondes

Il suffit de faire la même conversion pour la Date 2
Les soustraire d2 - d1 = durée
et convertir cette durée de secondes en HHmmss
Sur cette dernière étape la solution a été donnée par notre bastoonet (modèle breveté Team BO-BA) dans le sujet ci-dessous
http://www.developpez.net/forums/sho...d.php?t=421156

Alors ? ????
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 10h46   #8
Invité régulier
 
Inscription : septembre 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 31
Points : 9
Points : 9
Salut,
Merci beaucoup, en effet ça marche nikel.
J'ai par contre une petite remarque, j'ai utilisé :
Code :
EnNombre(Gauche(<a> ,2))
plutot que :
Code :
EnNombre(Gauche(FormatDeDate(<a> ,"HHmmss") ,2) )
Et de même pour les fonctions SousChaine et Droite.
Mais sinon ça résoud parfaitement mon problème.
Encore Merci !!
FloLens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 11h57   #9
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Tu as tout à fait raison

Le FormatDeDate(<a>.... était de trop
puis que je l'avais déjà mis dans la formule de <a>
Je vais le corriger dans mon message au cas où quelqu'un le copierait ...
A +
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h57.


 
 
 
 
Partenaires

Hébergement Web