Bonjour,
La fonction EntierVersHeure renvoie une chaîne de 8 caractères numérique au format HHMMSSCC.
"01000000" correspond à 01:00:00:00 ou 01H00M00s00c.
Donc vous retrouvez la durée attendue de 1H.
Pour le reste,
nValentier = ((REQ_prodroute_anciennes_heures.TOTIME)*100)-((REQ_prodroute_anciennes_heures.FROMTIME)*100)
peut être optimisé en
nValentier = (REQ_prodroute_anciennes_heures.TOTIME - REQ_prodroute_anciennes_heures.FROMTIME)*100
C'est plus lisible et cela consomme moins de ressources puisque on n'effectue qu'une multiplication.
Vous devriez stocker la DateHeure de début et celle de fin (en 'bonne pratique', on ne stocke pas les résultats d'un calcul)
En terme d'occupation disque : 8 caractères (rubrique Date, rubrique Heure ou rubrique Date avec sélecteur DateHeure coché) au lieu de 4 a priori, ce qui ne représente rien du tout avec les capacités disque actuelles.
Avantage : Vos calculs ne devraient plus tenir compte de la bascule "minuit" puisque la date serait prise en considération et il n'y aurait plus besoin de reconvertir en durée ou en heure.
Votre calcul (il n'y en aurait plus que 1) ressemblerait à ceci :
1 2 3 4 5 6 7 8
| Début, Fin sont des DateHeure
DuréeEnCentièmes est un entier //pour illustrer les propriétés du type Durée auxquelles je vous renvoyais
DuréeEnSecondes est un réel
//la propriété ..EnSecondes attend un réel tandis que ..EmMillisecondes attend un entier
Durée = Fin - Début
//Pour autant que vous ayez encore besoin des centièmes de seconde.
DuréeEnCentièmes = Durée..EmMillisecondes * 10
DuréeEnSecondes = Durée..EnSecondes //qui pourrait être divisé par 100 pour les centièmes |
Bon travail
Hemgé
Partager