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

WinDev Discussion :

Problème de durée


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 324
    Points : 40
    Points
    40
    Par défaut Problème de durée
    Bonjour,

    Je souhaite récupérer une durée(en heures/minutes) comprise entre une heure de début (en secondes) et une heure de fin(en secondes).
    Voici le code que j'ai utilisé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SI REQ_prodroute_anciennes_heures.FROMTIME < REQ_prodroute_anciennes_heures.TOTIME ALORS       
    		nValentier = ((REQ_prodroute_anciennes_heures.TOTIME)*100)-((REQ_prodroute_anciennes_heures.FROMTIME)*100)
    		HEURE = EntierVersHeure(nValentier)
    		tps_arret = HEURE-MINUIT
    	SINON
    		// SI L'HEURE DE DEBUT > L'HEURE DE FIN ALORS L'ENTIER EST NEGATIF ET LE RESULTAT EST OTE DE 24h00
    		nValentier = ((REQ_prodroute_anciennes_heures.TOTIME)*100)-((REQ_prodroute_anciennes_heures.FROMTIME)*100)
    		HEURE = EntierVersHeure((nValentier) +8640000 )
    		tps_arret = (HEURE)-MINUIT
    	FIN
    Si on part du principe que REQ_prodroute_anciennes_heures.FROMTIME = 14400 et REQ_prodroute_anciennes_heures.TOTIME = 18000 alors j'ai un écart de durée qui est de 3600 secondes (soit 1h), que je multiplie par 100 pour avoir un résultat en centièmes de secondes.

    La fonction EntierVersHeure me donne cette valeur: 010000000

    Cependant la durée que je récupère est d'une minute alors que je devrais récupérer 1h.

    Pouvez-vous m'aider ?

    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Quand vous avez un problème, commencez par évaluer son vocabulaire, ce qui vous permet ensuite de vous référer à la documentation et enfin de faire des recherches sur les Forums habituels (Ici et PCsoft essentiellement) sans oublier Google.

    Après cela vient l'appel à l'aide, en sachant qu'entretemps, vous n'aurez certainement pas perdu votre temps.

    En ce qui concerne votre problème, voyez la documentation sur le type de variable Durée et notamment ses propriétés.
    Vous y trouverez votre bonheur.

    Hemgé.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 324
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    Je pense avoir bien utilisé les types de variables, puisque avant mon code, j'ai déclaré ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nValentier est une entier
    tps_arret est une Durée
    HEURE est une Heure
    MINUIT est une Heure = "000000000"

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nValentier = ((REQ_prodroute_anciennes_heures.TOTIME)*100)-((REQ_prodroute_anciennes_heures.FROMTIME)*100)
    peut être optimisé en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é

Discussions similaires

  1. [phpMyAdmin] Problème de durée de session sous phpMyAdmin
    Par AAlain dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 25/01/2011, 19h05
  2. Problème profiling durée incorrecte
    Par amarion dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/03/2008, 15h56
  3. Problème de durée de vie de mes AppDomains
    Par nouls dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/02/2008, 16h25
  4. Problème de durée de mes variables en session
    Par casho dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/08/2007, 13h57
  5. [PHPMailer] Problème de durée de traitement
    Par arno_ dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/04/2007, 16h53

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