PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 28 → calculer un horaire avec une heure plus une durée
calculer un horaire avec une heure plus une durée
Débuté par Ludovic BLANC, 17 nov. 2023 19:29 - 8 réponses
Membre enregistré
14 messages
Posté le 17 novembre 2023 - 19:29
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...!
Membre enregistré
284 messages
Posté le 20 novembre 2023 - 09:07
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.
Membre enregistré
14 messages
Posté le 20 novembre 2023 - 23:30
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...
Membre enregistré
14 messages
Posté le 20 novembre 2023 - 23:46
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
Membre enregistré
312 messages
Posté le 21 novembre 2023 - 09:36
Bonjour,
Avez-vous essayé avec la conversion ChaîneVersDurée (Fonction)
https://doc.pcsoft.fr/?3027002
Cdlt
Membre enregistré
14 messages
Posté le 26 novembre 2023 - 02:45
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) ?
Membre enregistré
273 messages
Popularité : +24 (28 votes)
Posté le 26 novembre 2023 - 09:09
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

// Surtout pas affecter un entier sinon il sera considéré alors
// comme le nombre de centièmes de seconde écoulés depuis minuit
MonHeureArrivee = "2230"


MaDuree..Hour = 1; MaDuree..Minute = 25

MonHeureDepart = MonHeureArrivee

MonHeureDepart..Hour += MaDuree..Hour
MonHeureDepart..Minute += MaDuree..Minute

Trace(MonHeureArrivee +TAB+ MaDuree +TAB+ MonHeureDepart)
Membre enregistré
927 messages
Popularité : +16 (20 votes)
Posté le 27 novembre 2023 - 10:45
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
Membre enregistré
284 messages
Posté le 30 novembre 2023 - 09:16
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 modifié, 30 novembre 2023 - 09:18