Forum Clubic

Test sur des plages horaires

Voici mon problème.Dans une base de donnée j’ai des périodes : un champ pour le jour (type date) , un champ pour l’heure du début (type heure) et un champ pour l’heure de fin (type heure) d’une période.

Je voudrai savoir si certaines période se chevauche.
Par exemple, jai une période dans ma base de 10h30-12h30. Avant d’ajouter une autre période dans ma base (par exemple 9h à 13h) je voudrai tester si la période que j’ajoute dans ma base chevauche la première.

Je ne voie pas comment faire. On doit pouvoir tester les plages horaires dans tous les cas (dans le cas présent l’heure de debut et de fin de la plage saisi ne sont pas comprise dans les borne de la première)

J’espère avoir été assez clair.merci d’avance de vos réponses. :pt1cable:

Je vois 2 tests, à mon avis ça devrait suffir:

  • Si l’heure de fin de la nouvelle période est inférieur à l’heure de fin d’une période déjà enregistrée, tester si la fin de la nouvelle période est supérieur à la date de début de cette période actuelle.

  • Tu fais la meme pour l’heure de début de cette nouvelle période.

heu dsl mais je ne te suit pas là !!!!
si dans ma base jai pdebu1 et pfin1 et que la période que je saisi est pdebut2 et pfin2 : ça donne quoi concrètement le test ??

ce que dit jeanguy est ok :oui:

4 variables: d1,f1,d2,f2 (début période 1, fin période 1,début période 2, fin période 2…)

si d1<d2<f1 alors chevauchement
sinon si d1<f2<f1 alors chevauchement
sinon pas de chevauchement

Voilà, popol (:D) l’a expliqué d’une autre manière :slight_smile:

J’aime bien les questions pas trop casse tête!

pareil, surtout un lendemain de fête :smiley:

heu dsl mais tes conditions ne marche pas !!!!

si d1=10h et f1=11h
je saisi d2=9h et f2=13h

tes conditions ne marche pas et pourtant les 2 plages horaires se chevauche !!!!
ça doit ètre les lendemains de fètes ça !!!! :pt1cable:

Si si… la condition fonctionne, puisque dans ton exemple d1 est bien inférieur à f2, mais f2 ne l’ai pas à f1…

rappel de ce qu’a écrit popol:

si d1<d2<f1 alors chevauchement
sinon si d1<f2<f1 alors chevauchement
sinon pas de chevauchement

Fait un petit dessin.

C’est même pas des questions de date, mais des questions de maths pures et simples :slight_smile:

Et remettre en cause notre solution :o
Montre ton code, le probleme vient surement de la.

atten je doit avoir une problème, c’est pas possible, avec ton explication ça marche pas, aucune condition est rempli, tu l’écrit toi mème “f2 ne l’ai pas à f1”.
ça maffiche donc pas de chevauchement, alors quil y en a un !!!
dans mon exemple 9 et 13 ne sont jamais compris entre 10 et 11. Ou alors j’ai pas compris votre histoire…

Rolala!
Bon d’accord, il y a chevauchement!!!

Bon faut prendre le pb à l’envers c’est plus simple de tester s’il n’y a pas chevauchement:
il y a 6 cas de figure
d1->f1->d2->f2 NON chevauchement
d1->d2->f1->f2 OUI
d1->d2->f2->f1 OUI

d2->f2->d1->f1 NON
d2->d1->f2->f1 OUI
d2->d1->f1->f2 OUI

donc en gros
Si f1<d2 OU Si f2<d1 alors il n’y a pas chevauchement

Même avis que jeanguy… montre ton code,
A mon avis… tu oublis un AND (ou || ) quelque part dans tes conditions :paf:

merci beaucoup, ça marche nikel !!!
je comprend vite mais faut mexpliquer longtemps !!! :pt1cable: