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 :

Calcul Heures et colonne [WD20E]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 5
    Points
    5
    Par défaut Calcul Heures et colonne
    Bonjour,

    Je rencontre un problème dans mes formule de calcul :
    Je n'arrive pas a additionner la colonne heure il prend en compte que la première ligne.
    Dans le calcul des des montant par jour il ne tien pas compte des demi heure.

    J'ai créé une procédure local pour le cacul des 2 totaux :

    PROCEDURE Calcul()

    RAZ()
    SAI_Total_heure = 0
    SAI_Montant_total = 0

    POUR TOUTE LIGNE DE TABLE_EXPRESS_Heure
    SAI_Total_heure += TABLE_EXPRESS_Heure.COL_H_Nombre
    SAI_Montant_total += TABLE_EXPRESS_Heure.COL_MT_Jour
    FIN

    Nom : Calcul.JPG
Affichages : 2109
Taille : 45,5 Ko

    *********************************************************

    Dans ma fenêtre de saisie j'ai le code suivant dans le champ SAI_H_depart :

    nHr1EXPRESS, nHr2EXPRESS, nHnr3EXPRESS sont des entiers système

    nHr1EXPRESS = HeureVersEntier(SAI_H_depart)
    nHr2EXPRESS = HeureVersEntier(SAI_H_arrive)
    nHnr3EXPRESS = nHr1EXPRESS - nHr2EXPRESS
    SAI_H_Nombre = EntierVersHeure(nHnr3EXPRESS)

    hMonHeureEXPRESS est une Heure = SAI_H_Nombre
    SAI_MT_Jour = hMonHeureEXPRESS..Heure * SAI_Taux

    Nom : Fiche.JPG
Affichages : 2022
Taille : 24,4 Ko

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Baxter89 Voir le message
    Je n'arrive pas a additionner la colonne heure il prend en compte que la première ligne
    Bonjour,
    Pour additionner des heures, le mieux, ce serait de convertir les heures et les minutes en secondes, on additionne ces secondes et on convertit le résultat en heures, minutes, secondes.

    N'ayant pas la description de chaque colonne du champ table, c'est la seule solution que je peux proposer.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    N'ayant pas la description de chaque colonne du champ table, c'est la seule solution que je peux proposer.
    Merci de la réponse, voici les captures d'écran des descriptions de la table si ça peut aider.

    Nom : Table00.JPG
Affichages : 1976
Taille : 58,5 Ko
    Nom : Table01.JPG
Affichages : 1934
Taille : 62,6 Ko

    Merci

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Tu utilises des variables de type Heure (fonction HeureVersEntier() ...) , et c'est certainement pour cela que ça ne marche pas.
    Il faut utiliser des variables de type Durée (Dans la création de ta table, dans le type des colonnes : Duree).

    Beaucoup de débutants font l'erreur. Le moyen le plus clair que j'ai trouvé pour expliquer cela, c'est de dire :
    Si tu as une valeur de 12 heures, dans ton contexte
    - soit tu dis 12 heures c'est comme midi, et donc tu traites des HEURES.
    - soit tu dis 12 heures, c'est une demi-journée, et donc tu traites des DUREES.

    Il est 15h157 : c'est une heure
    Il s'est écoulé 30mn depuis ta question : c'est une durée.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ce qui est dit, c'est qu'on additionne des heures à des durées ou des durées avec une autre durée, mais on ne peut pas additionner une heure avec une autre heure, ce qui est dénué de sens.

    Exemples:
    1) Cas de l'addition entre une heure et une durée : ce soir, je vais faire du sport en salle de gym, je vais commencer à 18h (heure) et pendant 45 minutes (durée) --> on faisant l'addition, j'obtiens comme résultat que je vais finir ma journée de sport à 18h45, ce qui sera le cas
    2) Cas de l'addition entre une durée et une autre durée : ce soir, je vais faire 20 minutes (durée) de tapis et 25 minutes (durée) de vélo elliptique --> en faisant l'addition, j'obtiens bien comme résultat que je vais faire du sport pendant 45 minutes

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Tu utilises des variables de type Heure (fonction HeureVersEntier() ...) , et c'est certainement pour cela que ça ne marche pas.
    Il faut utiliser des variables de type Durée (Dans la création de ta table, dans le type des colonnes : Duree).

    Beaucoup de débutants font l'erreur. Le moyen le plus clair que j'ai trouvé pour expliquer cela, c'est de dire :
    Si tu as une valeur de 12 heures, dans ton contexte
    - soit tu dis 12 heures c'est comme midi, et donc tu traites des HEURES.
    - soit tu dis 12 heures, c'est une demi-journée, et donc tu traites des DUREES.

    Il est 15h157 : c'est une heure
    Il s'est écoulé 30mn depuis ta question : c'est une durée.
    Effectivement je traite une durée, c'est la ou je comprend pas, mon calcul de l'arrivé et du départ journalier est bon mais pas le total, alors que le total fonctionne bien avec le monétaires.

    Je vais regarder la doc en ligne de PC Soft sur la durée.
    encore une nuit blanche en perspective

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Colonne H_Arrivée, Il faut la déclarer en type Heure, ok. On peut arriver à midi.
    H_Départ, idem, type heure, on peut partir à midi.

    Mais H_Nombre, ce n'est plus du type Heure, c'est du type durée. On n'aura jamais midi dans cette colonne, même si on a 12 heures !

    On a un parallèle entre le type heure et le type date. ça sert à qualifier un instant ; On est le 6 juin (type DATE) ; il est 17h20 (type HEURE). C'est la même notion.
    On peut même dire : On est le 6juin et il est 17h20 (type DATEHEURE)

    DATE, HEURE, DATEHEURE, c'est 3 variantes de la même chose.

    Mais DUREE, c'est autre chose : une durée, ça peut être 2 jours ou bien 2 semaines ou bien 2 heures ou encore 2 minutes. Une DUREE, c'est un intervalle entre 2 DATEHEURE.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    Voici un code qui fonctionne
    Code windev : 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
    h1, h2 sont des Heures
    duTempsPasse est une Durée
     
    SAI_Total = 0
    SAI_TotalHeure = 0
    POUR TOUTE LIGNE DE TABLE_SansNom1
    	h1 = COL_Heure_d_arrivée
    	h2 = COL_Heure_de_départ
     
    	duTempsPasse = h2-h1
    	COL_Nombre_d_heure_par_jour = duTempsPasse
    	COL_Montant_par_jour = duTempsPasse..EnHeures * COL_Taux_par_heure // 60
     
    	SAI_Total += COL_Montant_par_jour
    	SAI_TotalHeure += COL_Nombre_d_heure_par_jour
    FIN

    Nom : table.jpg
Affichages : 1939
Taille : 109,7 Ko
    Nom : fenetre.jpg
Affichages : 1966
Taille : 52,8 Ko
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par philouZ Voir le message
    Bonjour,

    Voici un code qui fonctionne
    Un grand merci philouZ, ça me permet d'apprendre.

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

Discussions similaires

  1. Calcul sur différentes colonnes
    Par climz dans le forum Access
    Réponses: 4
    Dernier message: 22/05/2006, 19h00
  2. Calcul heure UCT par rapport à heure locale
    Par bobic dans le forum Oracle
    Réponses: 1
    Dernier message: 11/05/2006, 22h45
  3. [VB.NET] Calculs dans une colonne d'un datagridview
    Par boulete dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/03/2006, 15h11
  4. Calcul d'une colonne du table MySQL
    Par tom06440 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/11/2005, 19h10

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