Type Heure et Durée, j'y perds mon latin

Le
JC
Bonjour

Est-ce que vous avez des soucis avec les fonctions associées aux
Durées et aux Heures ? Moi oui, et je voudrais savoir où est le
problème Pour info, je suis sur WinDev 12.

Je veux faire une petite appli de gestion de mon temps. Donc j'ai un
fichier qui stocke des heures de début et des heures de fin de tâches,
+ un champ Durée. Et là, j'ai deux soucis majeurs :

_________________________________________________
- souci 1: calcul de durée

Dans la doc PCSoft, il est écrit:

pour Heure:

"
HeureDébut est une heure= 1205
HeureFin est une heure = "2030" // 20 heures 30
"

> On peut donc stocker dans les heures soit des valeurs numériques
soit des chaines

et pour Durée

"
HeureDébut est une heure= "1330"
HeureFin est une heure= "1730"
DuréeCongrès est une Durée = HeureFin - HeureDébut
"
> Idem, on peut stocker dans les heures soit des valeurs numériques
soit des chaines

Alors quand je fais

//cas 1:
hDébut est une Heure
hDébut = 1000
hFin est une Heure
hFin = 1230
duÉcart est une Durée = hFin - hDébut
Trace(hDébut) // renvoie 000010000
Trace(hFin) // renvoie 000012300
Trace(duÉcart) // renvoie 0000002300 (2h30 ok)
Trace(DuréeVersChaîne(duÉcart,"HH h MM mn")) // renvoie 00 h 00
mn !!!!!

// cas 2:
hDébut = "1000"
hFin = "1230"
duÉcart = hFin - hDébut
Trace(hDébut) // renvoie 100000000 !! pas la même valeur que ci-
dessus et pourtant c'est la même heure.
Trace(hFin) // renvoie 123000000 !! pas la même valeur que ci-
dessus et pourtant c'est la même heure.
Trace(duÉcart) // renvoie 0023000000 !! pas la même valeur que ci-
dessus et pourtant c'est la même durée
Trace(DuréeVersChaîne(duÉcart,"HH h MM mn")) // renvoie 02 h 30 mn
(yes !)


// avec DateHeure ça a l'air de mieux fonctionner
dhJourHeureDébut est un DateHeure = "201101011000"
dhJourHeureFin est un DateHeure = "201101011230"
duÉcartDate est une Durée
duÉcartDate = dhJourHeureFin - dhJourHeureDébut
Trace(duÉcartDate) // renvoie 0023000000
Trace(DuréeVersChaîne(duÉcartDate, "HH h MM mn")) // renvoie 02 h 30
mn (yes !)


Pouvez-vous m'expliquez pourquoi je n'obtiens pas les mêmes/bons
résultats dans les deux premiers cas ?

_________________________________________________
- souci 2: affichage dans une table

Maintenant, je veux afficher mon heure de début, mon heure de fin et
ma durée dans une table. Donc logiquement :
- la colonne heure_début contient le champ heure_début de mon
fichier : ce champ est du format Heure et la colonne est du format
Heure aussi. Dans le cas 1, les heures affichent 00:00 ! Dans le cas
2, elles affichent bien 10:00 et 12:30. Pourquoi cette différence ?
- la colonne durée contient le champ durée vu ci-dessus. La colonne
est du format Durée au format "HH:MM". Dans le cas 1, les durées
affichent " s" , et rien d'autre ! Dans le cas 2, les durées
affichent "02:30 h".

Pourquoi de tels résultats différents ? J'y perds mon latin

Merci pour vos lumières.

JC
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
erikflament
Le #23040001
Le 20/01/2011 17:54, JC a écrit :
Bonjour


bonjour

Est-ce que vous avez des soucis avec les fonctions associées aux
Durées et aux Heures ? Moi oui, et je voudrais savoir où est le
problème... Pour info, je suis sur WinDev 12.



je suis en 7.5 et ne travaille qu'avec des dateheures
exemple heure debut = "19:00" heure fin = "01:00" pas cool en heures
alors que dateheures convient pil poil

sur une gestion de temps en entreprise
une semaine ne peut dépasser 44 heures, il doit y avoir un repos de 11
heures entre 2 jours, etc..
dateheure est un format qui me convient mieux

eric
Romain PETIT
Le #23043741
JC avait soumis l'idée :
Bonjour



Bonjour,

---> On peut donc stocker dans les heures soit des valeurs numériques
soit des chaines



Oui, mais attention, si c'est un entier 1000 ne correspond pas à 10h00
mais à 1000 centièmes de secondes, soit 10 secondes.
(c'est pour cela que tu traces "000010000" et non "100000000" dans le
1er cas et que ton écart calculé est donc de 2 secondes 30 centièmes,
secondes qui n'apparaissent pas dans ton formatage d'affichage)

Extrait de l'aide
entier : l'heure correspondra alors au nombre de centièmes de secondes
écoulés depuis minuit "00 :00 :00 :00". A minuit correspond l'entier 0.
Ne peut dépasser 8.639.999 (24 heures - 1 centième de seconde).

A+

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Publicité
Poster une réponse
Anonyme