|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| Tache Agenda 22h-Minuit pas 00h |
| Débuté par Laurent AUCOUTURIER, 16 mai 2025 13:22 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 40 messages |
|
| Posté le 16 mai 2025 - 13:22 |
Bonjour Je suis bloqué pour réussir à créer une tache de 22h à minuit (24h). Dans ma boite de dialogue le client doit pourvoir inscrire Sai_HeureDebut : 22:00 Sai_HeureFin : 24h00
Car s'il met 00h00, le calcul de la durée est négative considérant le jour de la veille. N'existe t il pas une solution simple pour que 22h00 / 24h00 donne une durée de 2h alors que 22h/0h00 donne -22h Sachant que je ne parviens pas à inscrire 24h dans un champ de saisie horaire.
Bien sur je ne souhaite pas utiliser le 23h59 que j'utilise actuellement.
Il existe surement une solution mais ..... !!!! je ne trouve pas. Merci à tous.
Laurent
; |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 290 messages |
|
| Posté le 16 mai 2025 - 14:22 |
Bonjour, Tu peux éventuellement définir Sai_HeureFin comme un champ de saisie texte et lui définir les propriétés suivantes :
Sai_HeureFin..MasqueSaisie="99:99" Sai_HeureFin..Taille=5 Sai_HeureFin..Indication="HH:MM" L'utilisateur pourra saisir 24:00, mais attention, il faudra faire un contrôle pour s'assurer que les heures/minutes soient valides
Autre solution, ajouter J+1 à une variable de type DateHeure si l'utilisateur a saisi 00:00 Ex :
dDuree est une Durée dDebut,dFin sont des DateHeures nDate est un entier=DateVersEntier(DateSys()) dDebut=EntierVersDate(nDate)+Sai_HeureDebut SI Val(Sai_HeureFin)=0 ALORS dFin=EntierVersDate(nDate+1)+Sai_HeureFin SINON dFin=EntierVersDate(nDate)+Sai_HeureFin FIN dDuree=dFin-dDebut Trace(dDuree..EnHeures) La durée entre fin et début donnera un résultat plus cohérent si l'utilisateur a saisi 00:00
Cdt |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 497 messages |
|
| Posté le 16 mai 2025 - 17:42 |
Bonjour,
En partant du postulat qu'une heure de fin est toujours postérieure à une heure de début, vous pouvez aussi rajouter 24h à votre durée calculée dès lors qu'elle est négative.
Procedure CalculeDurée(hDébut est une heure, hFin est une heure) : Numérique duRésultat est une durée = hFin - hDébut SI duRésultat < 0 ALORS duRésultat..Heure += 24 FIN RENVOYER duRésultat..EnHeures FIN
Trace(CalculeDurée("2200", "2300"))
Trace(CalculeDurée("2200", "0000"))
Trace(CalculeDurée("2200", "0300"))
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 116 messages |
|
| Posté le 17 mai 2025 - 14:07 |
| Merci beaucoup pour ces propositions ou Idées, je vais tester la meilleure pour moi. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|