Je cale sur un truc qui devrait être tellement simple, que je doit passer à
côté de quelque chose qui me bouche ...l'écran.
Je voudrais additionner des heures dans un état, pour calculer le nombre
d'heures travaillées par un salarié.
Ce total sera supérieur à 24h -> il faut utiliser un champ de type "durée".
J'ai essayé l'exemple,et les explications donnés, ça ne marche pas.
Ma méthode actuel est issue de l'exemple "calcul sur heure et durée:
//calcul du cumul par jour, les (1),(2),(3) sont des numéros de ligne pour
l'explication
(1) DecodageHeure=0
(2) DecodageHeure..Heure = Val(FHeureSalarié.RubDurée[[1 A 2]])
//FHeureSalarié.RubDurée est une rubrique de type heure "HHMM"
(3) DecodageHeure..Minute= Val(FHeureSalarié.RubDurée[[3 A 4]])
(4) VarCumulJour+= DecodageHeure (ou VarCumulJour=
VarCumulJour+DecodageHeure)
......
//Lors d'un changement de jour
RUBCumulJourHeure=VarCumulJour..Heure
RUBCumulJourMinute=VarCumulJour..Minute
Toutes les variables RUB... sont des champs, Toutes les autres sont des
variables Durée, déclaré dans l'entête de l'état (Globale), mais j'ai essayé
d'autre cas de figure.
Si je passe en mode pas à pas ce code, ce qui me frappe, c'est la valeur de
DécodageHeure,
exemple : FHeureSalarié.RubDurée="0300" (3h00),
ligne (2) DecodageHeure..Heure = 3
ligne (3) DecodageHeure..Minute=0 , mais si je regarde la valeur de
DecodageHeure..Heure =0 !!!!
et biensur, ligne (4) VarCumulJour=0!!!!!
Et pourtant, ce code est exactement celui de l'exemple Windev ..
Je ne suis pas attaché a cette méthode, en fait je veut juste additionner
des heures (simple non), alors avant de me refaire une routine bien à moi et
qui marche, je voudrais, si quelqu'un peut m'aider, comprendre où j'ai loupé
la marche... ou me donner une solution autre mais qui fonctionne....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pascal H
"Eric Marcastel" a écrit dans news::
Ce total sera supérieur à 24h -> il faut utiliser un champ de type "durée". J'ai essayé l'exemple,et les explications donnés, ça ne marche pas.
Bonjour,
Je n'ai pas regardé l'exemple que tu cites, mais je suis surpris que tu affectes un à un des éléments composants de ta variable durée : << FHeureSalarié.RubDurée="0300" DecodageHeure..Heure = 3 DecodageHeure..Minute=0
D'après ce que j'ai lu sur le type durée, ce type permet d'effectuer des addition, soustractions ou comparaisons.
Mais des affectations directes ... j'ai comme un doute.
Je suis de la 'vieille' école (WD 5.5), mais je crois que ton problème vient de là. Et si tu essayais d'affecter ta variable DecodageHeure en utilisant ChaineVersDuree ?
-- Pascal
"Eric Marcastel" <e.marcastel@cetec.net> a écrit dans
news:1066651790.280297@teheran.magic.fr:
Ce total sera supérieur à 24h -> il faut utiliser un champ de type
"durée". J'ai essayé l'exemple,et les explications donnés, ça ne
marche pas.
Bonjour,
Je n'ai pas regardé l'exemple que tu cites, mais je suis surpris que tu
affectes un à un des éléments composants de ta variable durée :
<<
FHeureSalarié.RubDurée="0300"
DecodageHeure..Heure = 3
DecodageHeure..Minute=0
D'après ce que j'ai lu sur le type durée, ce type permet d'effectuer
des addition, soustractions ou comparaisons.
Mais des affectations directes ... j'ai comme un doute.
Je suis de la 'vieille' école (WD 5.5), mais je crois que ton problème
vient de là.
Et si tu essayais d'affecter ta variable DecodageHeure en utilisant
ChaineVersDuree ?
Ce total sera supérieur à 24h -> il faut utiliser un champ de type "durée". J'ai essayé l'exemple,et les explications donnés, ça ne marche pas.
Bonjour,
Je n'ai pas regardé l'exemple que tu cites, mais je suis surpris que tu affectes un à un des éléments composants de ta variable durée : << FHeureSalarié.RubDurée="0300" DecodageHeure..Heure = 3 DecodageHeure..Minute=0
D'après ce que j'ai lu sur le type durée, ce type permet d'effectuer des addition, soustractions ou comparaisons.
Mais des affectations directes ... j'ai comme un doute.
Je suis de la 'vieille' école (WD 5.5), mais je crois que ton problème vient de là. Et si tu essayais d'affecter ta variable DecodageHeure en utilisant ChaineVersDuree ?
-- Pascal
Eric Marcastel
Merci,
ça marche, trés bien, et pourtant je pensais l'avoir essayé, (j'étais sur de passer à côté). Mon exemple devient:
VarDecodageHeure=ChaîneVersDurée(FHeureSalarié.RubDurée, "HHMM") VarCumulJour+= VarDecodageHeure //FHeureSalarié.RubDurée est de type heure, et toutes les autres variables de type Durée
Merci beaucoups et bonne journée
Eric Marcastel
"Pascal H" a écrit dans le message de news:
"Eric Marcastel" a écrit dans news::
> Ce total sera supérieur à 24h -> il faut utiliser un champ de type > "durée". J'ai essayé l'exemple,et les explications donnés, ça ne > marche pas. >
Bonjour,
Je n'ai pas regardé l'exemple que tu cites, mais je suis surpris que tu affectes un à un des éléments composants de ta variable durée : << FHeureSalarié.RubDurée="0300" DecodageHeure..Heure = 3 DecodageHeure..Minute=0 >>
D'après ce que j'ai lu sur le type durée, ce type permet d'effectuer des addition, soustractions ou comparaisons.
Mais des affectations directes ... j'ai comme un doute.
Je suis de la 'vieille' école (WD 5.5), mais je crois que ton problème vient de là. Et si tu essayais d'affecter ta variable DecodageHeure en utilisant ChaineVersDuree ?
-- Pascal
Merci,
ça marche, trés bien, et pourtant je pensais l'avoir essayé, (j'étais sur de
passer à côté).
Mon exemple devient:
VarDecodageHeure=ChaîneVersDurée(FHeureSalarié.RubDurée, "HHMM")
VarCumulJour+= VarDecodageHeure
//FHeureSalarié.RubDurée est de type heure, et toutes les autres variables
de type Durée
Merci beaucoups et bonne journée
Eric Marcastel
"Pascal H" <pascal@alussinan.org> a écrit dans le message de
news:XnF941A942FF365BPHFree@127.0.0.1...
"Eric Marcastel" <e.marcastel@cetec.net> a écrit dans
news:1066651790.280297@teheran.magic.fr:
> Ce total sera supérieur à 24h -> il faut utiliser un champ de type
> "durée". J'ai essayé l'exemple,et les explications donnés, ça ne
> marche pas.
>
Bonjour,
Je n'ai pas regardé l'exemple que tu cites, mais je suis surpris que tu
affectes un à un des éléments composants de ta variable durée :
<<
FHeureSalarié.RubDurée="0300"
DecodageHeure..Heure = 3
DecodageHeure..Minute=0
>>
D'après ce que j'ai lu sur le type durée, ce type permet d'effectuer
des addition, soustractions ou comparaisons.
Mais des affectations directes ... j'ai comme un doute.
Je suis de la 'vieille' école (WD 5.5), mais je crois que ton problème
vient de là.
Et si tu essayais d'affecter ta variable DecodageHeure en utilisant
ChaineVersDuree ?
ça marche, trés bien, et pourtant je pensais l'avoir essayé, (j'étais sur de passer à côté). Mon exemple devient:
VarDecodageHeure=ChaîneVersDurée(FHeureSalarié.RubDurée, "HHMM") VarCumulJour+= VarDecodageHeure //FHeureSalarié.RubDurée est de type heure, et toutes les autres variables de type Durée
Merci beaucoups et bonne journée
Eric Marcastel
"Pascal H" a écrit dans le message de news:
"Eric Marcastel" a écrit dans news::
> Ce total sera supérieur à 24h -> il faut utiliser un champ de type > "durée". J'ai essayé l'exemple,et les explications donnés, ça ne > marche pas. >
Bonjour,
Je n'ai pas regardé l'exemple que tu cites, mais je suis surpris que tu affectes un à un des éléments composants de ta variable durée : << FHeureSalarié.RubDurée="0300" DecodageHeure..Heure = 3 DecodageHeure..Minute=0 >>
D'après ce que j'ai lu sur le type durée, ce type permet d'effectuer des addition, soustractions ou comparaisons.
Mais des affectations directes ... j'ai comme un doute.
Je suis de la 'vieille' école (WD 5.5), mais je crois que ton problème vient de là. Et si tu essayais d'affecter ta variable DecodageHeure en utilisant ChaineVersDuree ?