dadou_82
Messages postés44Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention29 août 2007
-
10 juil. 2007 à 16:52
dadou_82
Messages postés44Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention29 août 2007
-
11 juil. 2007 à 10:56
bonjour
J'ai une application sous access et je gere des reservations de salle.
Une personne veut reserver du 01/08/2007/ au 05/08/2007 et une autre personne veut reserver du 03/08/2007 au 07/08/2007 donc la deuxieme personne ne pourra pas la louer.
Comment peut on gerer ce probleme?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 11 juil. 2007 à 10:20
Si je me trompe pas, pour traiter tous les cas en une seule requette, ça devrait donner quelque chose dans le genre :
SELECT * FROM TaTable
WHERE
(dateDebàsaisir BETWEEN champDateDebut AND champDateFin )
OR
(dateFinàsaisir BETWEEN champDateDebut AND champDateFin )
OR
(champDateDebut BETWEEN dateDebàsaisir AND datefinàsaisir)
OR
(champDateFin BETWEEN dateDebàsaisir AND dateFinàsaisir)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 10 juil. 2007 à 16:55
Il suffit de comparer les dates.
Lorsque tu veux enregistrer une réservation, tu vérifie individuellement que les dates de debut et de fin ne sont pas comprises dans un intervale déjà enregistré.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 10 juil. 2007 à 17:07
yes, 2 fois.
Une fois pour la date de debut et une fois pour la date de fin
Et encore il faudrait en rajouter un 3eme pour savoir si tu n'as pas une date de but ou une date de fin déjà enregistrée incluse dans la fourchette que tu essaye d'enregistrer.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 10 juil. 2007 à 17:57
Salut dadou,
Salut Casy,
en attendant
@Casy : Pourquoi tester autant de fois ?
Il suffit
>de récupérer la ligne Dernière réservation d' une salle
>de voir si la date fin de réservation est inférieure à la
date début de la prochaine.
Dans l' exemple : comparer le 05/08/2007 avec le 03/08/2007
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 10 juil. 2007 à 18:07
Dans le cas ou tu fait tes réservations de façon linéaire, ce qui est loin d'etre le cas pour les réservations d'une salle.
Imagine que la dernière réservation porte sur la période 7-10/12/2007 (un mariage par exemple), et que tu veux enregistrer une réservation pour le 15/08/2007, comment fais-tu ?
Pour les cas que j'explique, admettons que l'on est une réservation pour la période 02-09/09/2007, rien avant, rien après
Les tests indiqués correspondent aux cas suivants
- reservation du 29/08-05/092007 ou (date de fin à cheval sur une réservation existante)
- reservation du 06-11/09/2007 ou (date de début à cheval)
- réservation du 28/08-12/09/2007 (période incluant une période déjà réservé)
Sachant que le cas ou la période est incluse dans une période déjà réservée, est géré par les 2 premiers cas
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 10 juil. 2007 à 18:38
mais en y réfléchissant bien,
ne faudrait-il pas à partir du fichier réservation
générer pour chaque salle, les périodes ou elle serait libre.
ça serait plus facile que de comparer avec les périodes réservations.
D' autant plus que ce recap on doit l' avoir constament sous l' oeil.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 10 juil. 2007 à 18:58
Si ce fichier est correctement construit (base de donnée ?) et contient toutes les données necessaires, tu peux ensuite faire ce que tu veux, il ne s'agit que de l'affichage avec un peu de traitement.
On pourrait aussi très bien imaginer un logiciel plus évoluer qui gere les réservations de manières graphiques style Calendrier d'Outlook 2003.
Tout est possible, il suffit d'en avoir les moyens, le temps et l'argent (dans le cas de projets commerciaux) et surtout voir si le besoin que l'on a justifie la débauche de moyens à mettre en oeuvre.
dadou_82
Messages postés44Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention29 août 2007 11 juil. 2007 à 09:48
Desolé mais je n'arrive pas à le faire en SQL.
Je n'arrive pas à savoir comment faire la requete ,comment peut on dire que si la date est entre cette fourchette la il ne faut pas l'accepter?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 11 juil. 2007 à 09:58
Pour chacun des trois tests, il faut que tu fasse une requette de sélection sur les critères indiqués.
Si une des trois requettes renvoie au moins un enregistrement, cela veut dire que la date que tu vas essayer de saisir (car à ce moment là, tu ne l'a pas encore fait) va rentrer en conflit avec les périodes déjà enregistrées . Dans ce cas donc tu ne fait pas l'enregistrement.
Tu ne fais l'enregistrement de ta date que si et seulement si les trois tests n'ont renvoyer aucun enregistrement, cela signifie que la plage que tu souhaite enregistrée est disponible.
dadou_82
Messages postés44Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention29 août 2007 11 juil. 2007 à 10:07
OK pour les deux premiere requete mais pour la 3eme je ne vois pas?
"Et encore il faudrait en rajouter un 3eme pour savoir si tu n'as pas une date de but ou une date de fin déjà enregistrée incluse dans la fourchette que tu essaye d'enregistrer."