PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Problème de comparaison de la période entre deux dates
Problème de comparaison de la période entre deux dates
Débuté par Hugues Hermann, 26 nov. 2014 16:39 - 15 réponses
Membre enregistré
12 messages
Posté le 26 novembre 2014 - 16:39
Bonjour,
Je fais un petit programme pour la réservation d'équipement avec windev. Pour une réservation, on enregistre la date prévue pour le prêt et la date prévue pour le retour de l'équipement. Pour un nouvel enregistrement, on vérifie dans la table réservation si dans la période voulu pour le nouvel enregistrement , l'équipement n'a pas déja été reservé.
J'ai essayé plusieurs solutons mais toujours au point de départ. Aidez moi S'il vous plaît.
Posté le 26 novembre 2014 - 20:23
Bonjour Hugues...

elle a l'air très bien ta solution, pour ce que tu nous en dis...

maintenant, si tu as question, n'hésite pas à la poser

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXReplication, votre système de réplication open source est
disponible sur mon site web !!!
WXShowroom.com : Montrez vos projets !
Plus d'information sur http://fabriceharari.com

On 11/26/2014 10:39 AM, Hugues Hermann wrote:
Bonjour,
Je fais un petit programme pour la réservation d'équipement avec windev.
Pour une réservation, on enregistre la date prévue pour le prêt et la
date prévue pour le retour de l'équipement. Pour un nouvel
enregistrement, on vérifie dans la table réservation si dans la période
voulu pour le nouvel enregistrement , l'équipement n'a pas déja été
reservé.
J'ai essayé plusieurs solutons mais toujours au point de départ. Aidez
moi S'il vous plaît.
Membre enregistré
12 messages
Posté le 26 novembre 2014 - 22:11
Mort de rire, c'est mon premier post et je ne savais pas comment m'y prendre. Si tu peux m'aider ça me ferait très plaisir Fabrice.
Membre enregistré
283 messages
Popularité : +3 (3 votes)
Posté le 26 novembre 2014 - 22:47
Bonjour Hugues,

+1 pour Fabrice.

Comme te le dit Fabrice entre les lignes : tu expliques les fonctionnalités de ton soft mais pas où se situe ton problème ni quel est ton problème.

Bon dev et A+
Membre enregistré
12 messages
Posté le 27 novembre 2014 - 11:34
(Re) Bonjour, j'ai une table réservation contenant Réservation.DateDébut et Réservation.DateFin. Pour faire un nouvel enregistrement je veux vérifier que la période entre Sai_DateDébut pour la date de début et Sai_DateFin pour la date de fin n'est pas comprise dans la même période que Réservation.DateDébut et Réservation.DateFin. J'espère avoir spécifié cette fois mon problème.
Merci.
Posté le 27 novembre 2014 - 12:03
Bonjour,
Les deux périodes ne se recouvrent pas si:
Les dates de début et de fin de la première période sont antérieures à la
date de début de la seconde
OU
Les dates de début et de fin de la première période sont postérieures à la
date de fin de la seconde

Dans tous les autres cas il y a recouvrement.

Frédéric.

"Hugues Hermann" a écrit dans le message de groupe de discussion :
2014101ba598c815073ac6b827dd2e96cfd6@news.pcsoft.fr...

(Re) Bonjour, j'ai une table réservation contenant Réservation.DateDébut et
Réservation.DateFin. Pour faire un nouvel enregistrement je veux vérifier
que la période entre Sai_DateDébut pour la date de début et Sai_DateFin pour
la date de fin n'est pas comprise dans la même période que
Réservation.DateDébut et Réservation.DateFin. J'espère avoir spécifié cette
fois mon problème.
Merci.
Posté le 27 novembre 2014 - 12:58
Bonjour Hugues

en l'occurrence, sur ce forum, on aime bien quand les gens posent des
questions...

Ce sont des phrases avec un point d'interrogation à la fin, qui permet
de savoir à quoi on doit répondre, au lieu de devoir deviner sur quel
partie du post on doit commenter...

Donc, pose nous des questions... Plus elles seront précises, mieux on
pourra t'aider...

En particulier, si tu essaye de faire quelque chose et que ca ne
fonctionne pas, montre nous le code que tu utilise, dis nous ou ca
plante, et pose ta question

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXReplication, votre système de réplication open source est
disponible sur mon site web !!!
WXShowroom.com : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 11/27/2014 5:34 AM, Hugues Hermann wrote:
(Re) Bonjour, j'ai une table réservation contenant Réservation.DateDébut
et Réservation.DateFin. Pour faire un nouvel enregistrement je veux
vérifier que la période entre Sai_DateDébut pour la date de début et
Sai_DateFin pour la date de fin n'est pas comprise dans la même période
que Réservation.DateDébut et Réservation.DateFin. J'espère avoir
spécifié cette fois mon problème. Merci.
Membre enregistré
283 messages
Popularité : +3 (3 votes)
Posté le 27 novembre 2014 - 13:04
Bonjour,

Sauf erreur il y a 5 possibilités :
1) période chevauche la date début résa
2) période chevauche la date fin résa
3) période incluse entre date début et fin résa
4) période englobe les dates de résa
5) période hors dates résa

Donc :
SI Réservation.DateDébut > Sai_DateDébut ET Réservation.DateDébut < Sai_DateFin ALORS --> chevauche
SI Réservation.DateFin > Sai_DateDébut ET Réservation.DateFin < Sai_DateFin ALORS --> chevauche
// test inclusion
SI Sai_DateDébut > Réservation.DateDébut ET Sai_DateFin < Réservation.DateFin ALORS --> période incluse

Si les 3 tests passent, alors la période est hors résa

Bon dev et A+
Posté le 27 novembre 2014 - 14:13
Bonjour,
Souvent, les erreurs sur les dates sont dues au format.

On traite une chaîne du style '2014/11/27', voire '27/11/2014' alors que la fonction utilisée attend une date au format '20141127'
Membre enregistré
12 messages
Posté le 27 novembre 2014 - 23:20
Bonsoir,
Merci Tony mais ton code n'a pas fonctionné. Je continue de chercher et si j'ai quelque chose je vous le ferai savoir.
Merci à tous.
Posté le 28 novembre 2014 - 07:45
Bonjour,
Pour qu'on puisse t'aider d'avantage, il faudrait que tu nous montre ton
code.
De plus tu devrais utiliser le débuggueur de Windev: pose un point d'arrêt
sur la première ligne du code, puis avance pas à pas en regardant le contenu
des variables.
Tu devrais ainsi avoir une piste.

Frédéric.

"Hugues Hermann" a écrit dans le message de groupe de discussion :
2014a0e184dc617bda3131363d95992fba28@news.pcsoft.fr...

Bonsoir,
Merci Tony mais ton code n'a pas fonctionné. Je continue de chercher et si
j'ai quelque chose je vous le ferai savoir.
Merci à tous.
Membre enregistré
12 messages
Posté le 28 novembre 2014 - 10:19
Bonjour,
Voici le code utilisé pour enregistrer une nouvelle réservation
nIDEquipement est un entier = ouvre(Fen_Equipement)
//
EcranVersFichier(FEN_EnregistrementRéservation,Réservation)
//
SI SAI_DateDébut > SAI_DateFin ALORS
Erreur("La date du début doit être inférieure à la date de fin")
RepriseSaisie()
FIN
//On recherche dans la table réservation si l'équipement a déja été reservé
HRecherchePremier(Réservation,IDEquipement,nIDEquipement)
SI HTrouve()
SI OuiNon(Oui,"Voulez vous enregistrer cette réservation ?")
SI SAI_DateDateFin < Réservation.DateDebut OU SAI_DateDebut > Réservation.DateFin
HAjoute(Réservation)
Info("La réservation a été enregistré avec succès !")
SINON
Erreur("Cet équipement est indisponible pour la période indiquée")
RepriseSaisie()
FIN
FIN
SINON
HAjoute(Réservation)
Info("La réservation a été enregistré avec succès !")
FIN
J'expère que ça pourra aider.
Merci
Posté le 28 novembre 2014 - 11:03
Le test que tu fais sur les dates ne correspond pas à ceux qu'on t'a
indiqué...

Je note aussi que tu fais un EcranVersFichier sur le fichier Reservation,
puis un hLitRecherchePremier, puis en dernier un hAjoute. Il me semble qu'il
y a u problème de logique ici...

Frédéric.



"Hugues Hermann" a écrit dans le message de groupe de discussion :
2014106ff83917879c94e780da1ffa012705@news.pcsoft.fr...

Bonjour,
Voici le code utilisé pour enregistrer une nouvelle réservation
nIDEquipement est un entier = ouvre(Fen_Equipement)
//
EcranVersFichier(FEN_EnregistrementRéservation,Réservation)
//
SI SAI_DateDébut > SAI_DateFin ALORS
Erreur("La date du début doit être inférieure à la date de fin")
RepriseSaisie()
FIN
//On recherche dans la table réservation si l'équipement a déja été reservé
HRecherchePremier(Réservation,IDEquipement,nIDEquipement)
SI HTrouve()
SI OuiNon(Oui,"Voulez vous enregistrer cette réservation ?")
SI SAI_DateDateFin < Réservation.DateDebut OU SAI_DateDebut >
Réservation.DateFin
HAjoute(Réservation)
Info("La réservation a été enregistré avec succès !")
SINON
Erreur("Cet équipement est indisponible pour la période indiquée")
RepriseSaisie()
FIN
FIN
SINON
HAjoute(Réservation)
Info("La réservation a été enregistré avec succès !")
FIN
J'expère que ça pourra aider.
Merci
Posté le 28 novembre 2014 - 11:31
je ne pense pas que la vocation de ce forum soit de donner des cours
d'informatique et de logique.
Toutefois, pour apporter une petite pière à l'édifice, je donnerais une
piste supplémentaire:
Il faut penser à utiliser les fonctions HSauvePosition() et
HRetourPosition() pour sauvegarder les pointeurs.
Ce sera ma seule contribution à ce billet.

--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
Posté le 28 novembre 2014 - 12:28
Eric Laurent a écrit :
je ne pense pas que la vocation de ce forum soit de donner des cours
d'informatique et de logique.
...

--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)


+1
Posté le 29 novembre 2014 - 08:04
Bjr,

Joel avait écrit le 28/11/2014 :
Eric Laurent a écrit :
je ne pense pas que la vocation de ce forum soit de donner des cours
d'informatique et de logique.
...

-- Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)

+1


Et je dirais meme que dans la plupart des cas, si c 'esst bien conçu,
il n'y a meme pas besoin de "HSAuveposition....."

a plus

--
-------------------------------------------------------------
www.ctc-soft.com
Gestion biblo-documentaire (free-share)
Comptabilité shareware
Logiciels de Gestion de saisie terrain
Spécialisé Tournées de boulangers
-------------------------------------------------------------