Il s'agit en fait d'un simple calcul, mais le problème est que je dois ajouter deux jours par week end qui passe, l'entreprise étant fermée le samedi et le dimanche.
Pour faire plus simple :
DateFabrication + DureeCtrl + DureeLiv (+2 si un week-end) = DateLivraison
Mon problème se trouve donc dans l'ajout de ses 2 jours s'il se passe un week end pendant la date prévue puisque je ne sais pas comment faire. Je suis ouvert à toute suggestion, en espérant que vous aurez une solution à me proposer.
Note : j'ai assumé que DateFabrication est une date SQL, et que DureeCtrl et DureeLiv sont tous deux des entiers.
Détails de la requête SQL.
DateFabrication + DureeCtrl + DureeLiv
Retourne la date de fabrication + durée de contrôle et de livraison. (Date notée X pour la suite)
TO_CHAR(X, 'D')
La fonction TO_CHAR prenant en paramètre la date obtenue ci-dessus et 'D' (pour Day) va retourner le jour de la semaine correspondant à cette date (Jour noté Y pour la suite).
Le jour de la semaine commence à 1 qui représente Dimanche, ce qui veut dire que les jours de weekend sont 1 et 7.
DECODE (
Y,
1, 2,
7, 2,
0
)
DECODE fonctionne comme un IF/THEN/ELSE :
* le premier paramètre est l'expression que l'on cherche à comparer
* le deuxième paramètre est la valeur comparée à l'expression
* le troisième paramètre est la valeur de retour si l'expression correspond à la valeur précedente
* (deuxième et troisième paramètres peuvent se répéter au besoin)
* la dernière valeur est optionnelle, c'est la valeur retournée par défaut si aucune valeur n'a correspondu à l'expression évaluée.
Ici decode prend Y, le jour de la semaine, et le compare avec 1 ou 7, pour lesquels on retourne 2, et sinon retourne 0. (Notons ce résultat Z pour la suite)
SELECT
DateFabrication + Z
FROM ...
0 ou 2 peut enfin être ajouté à DateFabrication.
Ca devrait couvrir ton besoin si je l'ai bien compris :)
Fanny
PS : Il y a peut être un moyen plus facile d'y arriver, mais c'est ce qui m'est passé par la tête.
Ghalor
Messages postés2Date d'inscriptionmardi 18 janvier 2011StatutMembreDernière intervention19 janvier 2011 19 janv. 2011 à 09:48
Si j'ai bien compris ton code, tu compares le jours de X avec 1 et 7. J'aurai en fait besoin de comparer chaque jour entre la DateFabrication et X.
Après sous Access, je pense juste avoir à faire la même chose avec un switch.