|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
calculer un horaire avec une heure plus une durée |
Started by Ludovic BLANC, Nov., 17 2023 7:29 PM - 12 replies |
| |
| | | |
|
| |
Registered member 24 messages |
|
Posted on November, 17 2023 - 7:29 PM |
Bonjour,
Ça paraît tout bête mais je sèche sur une erreur : "un élément de type chaîne ne peut pas être convertis vers une durée"
Mais dans mon code je n'ai défini AUCUNE chaîne
//Variable globale HeureRef est une heure = SAI_Heure Durée est une durée = ParkingConnu.DureeStationnement //rubrique HFSQL Classic de type "Durée"
//Code au Clic du bouton BTN_Calculer HeureDeDepart est une heure = HeureRef + Durée
Voilà, je n'ai que ça à vous mettre sous la dent, rien de compliqué mais cette heure qui vient de 'je ne sais où" me bloque...! |
| |
| |
| | | |
|
| | |
| |
Registered member 385 messages |
|
Posted on November, 20 2023 - 9:07 AM |
Bonjour,
Commençons par le commencement : Est-ce que l'affectation de SAI_Heure dans HeureRef se passe bien ? Y a-t-il un masque de saisie dans SAI_Heure ?
Sinon sur le papier c'est censé fonctionner puisque d'après la doc la partie date de la durée est ignorée dans une telle addition. |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages |
|
Posted on November, 20 2023 - 11:30 PM |
Bonjour Pucpood, et merci,
l'affectation de la valeur a SAI_Heure se fait à son initialisation avec la ligbne de code : MoiMeme = HeureSys() cette valeur est ensuite affecté a la variable HeureRef, donc oui l'affectation de l'heure courante à la variable HeureRef est je pense correct.
Après un rapide controle de chaque valeur : Au clic sur BTN_Calculer
HeureRef = 231900000 ParkingConnu.DureeStationnement = 0200 HeureDeDepart = 231945807 //initialisé à HeureSys()
Masque de Saisie de SAI_Heure = "Rouleau Heure" Masque d'affichage de SAI_Heure = "meme que la saisie" valeur retournée = HHMM //pareil pour les autres valeurs
je suis completement paumé... merci en tout cas de votre aide... |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages |
|
Posted on November, 20 2023 - 11:46 PM |
après quelques modif, j'obtiens maintenant l'erreur "Un element de type chaine ne peut etre converti vers le type durée" Au code de Selection d'une ligne de Combo_ParkingConnu qui contient :
HLitRecherche(ParkingConnu,Lieu,MoiMême..ValeurAffichée) DureeChoisie = ParkingConnu.DuréeStationnement LIB_duree = ParkingConnu.Durée |
| |
| |
| | | |
|
| | |
| |
Registered member 698 messages |
|
Posted on November, 21 2023 - 9:36 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages |
|
Posted on November, 26 2023 - 2:45 AM |
par desespoir, j'ai tout recommencé... J'ai supprimer les type durée et remplacer par des type heure, je n'ai plus l'erreur "durée vers chaine" mais le calcul ne se fait pas correctement... (Et pour te répondre cédric, oui j'avais aussi tenté avec la fonction ChaineVersDurée sans succès...)
ParkingConnu.Durée = 0200 //Type : Heure HeureArrivée est une Heure // = Exemple : 023544000 //HHMMSSCCC DuréeChoisie est une Heure // = Exemple : 020000000 //HHMMSSCCC HeureDépart est une Heure // = Résultat Obtenu : 023544000 //HHMMSSCCC
Mon code au Clic sur BTN_Calculer :
HeureArrivée = HeureSys() DureeChoisie = ParkingConnu.Durée HeureDepart = HeureArrivee+DureeChoisie
LIB_Heure = HeureDepart
Ma question :
Pourquoi mon HeureDepart n'est pas le resultat de l'opération : HeureArrivee + DureeChoisie (et est identique à HeureArrivée) ? |
| |
| |
| | | |
|
| | |
| |
Registered member 291 messages |
|
Posted on November, 26 2023 - 9:09 AM |
Bonjour à Tous Je me pose une question qu'il-il prévu lors d'un dépassement que capacité ? 23H50 + 20 minutes ? Bien Cordialement
//--------------------
MonHeureArrivee is Time MonHeureDepart is Time MaDuree is Duration
MonHeureArrivee = "2230"
MaDuree..Hour = 1; MaDuree..Minute = 25
MonHeureDepart = MonHeureArrivee
MonHeureDepart..Hour += MaDuree..Hour MonHeureDepart..Minute += MaDuree..Minute
Trace(MonHeureArrivee +TAB+ MaDuree +TAB+ MonHeureDepart) |
| |
| |
| | | |
|
| | |
| |
Registered member 1,014 messages |
|
Posted on November, 27 2023 - 10:45 AM |
Je passerai par une requete HFSQL 1 - transformer la durée en minutes 2 - SELECT dateadd(mi,maDureeEnMinutes,getdate())
-- Pascal Boulesteix Applications Visiolittoral et WNat |
| |
| |
| | | |
|
| | |
| |
Registered member 385 messages |
|
Posted on November, 30 2023 - 9:16 AM |
Ludovic BLANC a écrit :
par desespoir, j'ai tout recommencé... J'ai supprimer les type durée et remplacer par des type heure, je n'ai plus l'erreur "durée vers chaine" mais le calcul ne se fait pas correctement... (Et pour te répondre cédric, oui j'avais aussi tenté avec la fonction ChaineVersDurée sans succès...)
ParkingConnu.Durée = 0200 //Type : Heure HeureArrivée est une Heure // = Exemple : 023544000 //HHMMSSCCC DuréeChoisie est une Heure // = Exemple : 020000000 //HHMMSSCCC HeureDépart est une Heure // = Résultat Obtenu : 023544000 //HHMMSSCCC
Mon code au Clic sur BTN_Calculer :
HeureArrivée = HeureSys() DureeChoisie = ParkingConnu.Durée HeureDepart = HeureArrivee+DureeChoisie
LIB_Heure = HeureDepart
Ma question :
Pourquoi mon HeureDepart n'est pas le resultat de l'opération : HeureArrivee + DureeChoisie (et est identique à HeureArrivée) ?
Je me demande si tu ne te mélanges pas les pinceaux entre les heures et les durées. Toute information de durée doit se trouver dans une variable ou une rubrique de type durée. Tout horodatage doit se trouver dans une variable ou une rubrique de type Heure ou DateHeure. Il est impératif que "DuréeChoisie" soit de type "Durée". As-tu regardé cette page ? https://doc.pcsoft.fr/fr-FR/?1514040
La question de Gemini1961 est intéressante, mais il faut déjà qu'un cas simple fonctionne.Message modified, November, 30 2023 - 9:18 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages |
|
Posted on December, 07 2023 - 4:12 PM |
coucou Pucpood et merci de ta réponse, en faite j'ai modifier le type Durée de DureeChoisie, car j'obtenais l'erreur "type chaine ne peux pas etre convertis vers Durée"
Dans mon fichier sql, qui stock les durée max de stationnement des parking déjà connu, le type (ou meme sous-type) de ma rubrique ParkingConnu.Durée est obligatoirement une Heure. ducoup dans mon code je recupère cette valeur dans la variable DureeChoisie de type Heure.
j'ai effectivement déjà vu la page que tu m'a partager, mais dans leurs exemple ils additionne 2 heures, et non 1 heure plus une durée... et il connaissent d'avance DateHeureDebut et DateHeureFin... contrairement a moi qui cherche justement DateHeureFin (enfin la date j'en ai pas besoin mais tu m'as compris je pense.....)
et effectivement quand j'aurais compris tout ce MicMac je pourrais me faire un plaisir de repondre a Gemini car c'est justement pour ce genre de cass que je n'arrive pas a calculer moi-meme de tete....
et Merci PASCAL pour cette piste je vais essayer quelques petites choses et je reviens vers vous.... Merci a tous ceux qui participe a ce sujet. |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages |
|
Posted on December, 07 2023 - 7:15 PM |
Je pense avoir trouvé un code qui fonctionne, après quelques test, à voir si à l'utilisation dans le temps, certains horraires ne beug pas...
je partage pour ceux qui en aurais besoin...
DureeChoisie = ParkingConnu.Durée
HRHA est une chaîne = Milieu(HeureArrivee,1,2) mnHA est une chaîne = Milieu(HeureArrivee,3,2) HRDC est une chaîne = Milieu(DureeChoisie,1,2) mnDC est une chaîne = Milieu(DureeChoisie,3,2)
MinutesDepart est un entier = ChaîneVersNumérique(mnHA)+ChaîneVersNumérique(mnDC) HeuresDepart est un entier = ChaîneVersNumérique(HRHA)+ChaîneVersNumérique(HRDC)
SI MinutesDepart>=60 ALORS MinutesDepart = MinutesDepart-60 HeuresDepart++ SINON FIN
SI HeuresDepart>=24 ALORS HeuresDepart = HeuresDepart-24 SINON FIN
LibHeureVal est une chaîne = NumériqueVersChaîne(HeuresDepart)+NumériqueVersChaîne(MinutesDepart)
LIB_Heure = LibHeureVal |
| |
| |
| | | |
|
| | |
| |
Registered member 385 messages |
|
Posted on December, 19 2023 - 9:56 AM |
Ludovic BLANC a écrit :
j'ai effectivement déjà vu la page que tu m'a partager, mais dans leurs exemple ils additionne 2 heures, et non 1 heure plus une durée... et il connaissent d'avance DateHeureDebut et DateHeureFin... contrairement a moi qui cherche justement DateHeureFin (enfin la date j'en ai pas besoin mais tu m'as compris je pense.....)
J'insiste, la page que je t'ai indiquée commence par un tableau à 2 dimensions qui t'indique ce que tu obtiens comme type pour chaque combinaison possible de type entre les heures et les durées. Sache aussi que les types Durée et Heure t'offrent le moyen de récupérer directement leur partie heure ou leur partie minute. Le type Durée permet aussi de récupérer directement la durée totale exprimée en heure ou en minute ou etc. On voit très clairement que type Heure (pour toi l'arrivée) + type Durée (pour toi le temps, la durée) = type Heure (pour toi le départ) .
A bientôt ! |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages |
|
Posted on October, 13 2024 - 12:56 PM |
Re bonjour à tous, je viens de re tester mon appli, le calcul des heure et durée max se passe correctement, le sujet est donc résolu, bien que je ne me rappel plus quel modification j'avais effectué, je posterais une solution plus complète pour le cas où ça pourraisen aider d'autres, dès que je me repenche sur le code source, j'avoue que ça fait longtemps que je n'ai pas mis le nez dedans car j'ai travaillé sur d'autres projet en parallèle.
Merci à tous, bonne continuation. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|