RETURN ( ;
(m.iMonth = 1 AND m.iDay = 1) ; && jour de l'an OR (m.iMonth = 5 AND m.iDay = 1) ; && fete du travail OR (m.iMonth = 5 AND m.iDay = 8) ; && victoire 1945 OR (m.iMonth = 7 AND m.iDay = 14) ; && fete nationale OR (m.iMonth = 8 AND m.iDay = 15) ; && assomption OR (m.iMonth = 11 AND m.iDay = 1) ; && toussaint OR (m.iMonth = 11 AND m.iDay = 11) ; && armistice OR (m.iMonth = 12 AND m.iDay = 25) ; && noel OR (m.dDate = m.dLundiPaques) ; && lundi de paques OR (m.dDate = m.dLundiPaques + 39) ; && ascencion OR (m.dDate = m.dLundiPaques + 49) ; && lundi de pentecote VARIABLE SELON L'ETB
)
Commentaires
le 17/02/2011, Luc a écrit : Super pour le lundi de paques et les autres dates variables. Juste un défaut : Si par hasard on ne fait pas Annee = YEAR(m.dDate) mais Année = Val(UneAnnéeSousFormeDeChaineDeCaractères"), VFP n'interpréte pas l'année sous la même forme numérique, et dLundiPaques vaut vide ({//}) (au moins dans le cas de 2012). En effet, dans le cas de 2012, PADL(m.iJ, 2, "0") renvoie "8." au lieu de "08". La nouvelle formule ci-dessous semble fonctionner dans tous les cas : dLundiPaques = CTOD("^" ; + STR(m.Annee,4) ; + IIF(m.iTemp6 > 31,"/04/","/03/") ; + PADL(Transform(m.iJ), 2, "0") ; ) + 1 && Paques + 1 jour
le 17/02/2011, Black Sabbath a écrit : et pourquoi j'avais marqué "dDate As Date" ??? Cela sert à quoi que Ducros se décarcasse (pub 1991) !
En revanche, attention à OR (DOW(m.dDate) = 7) && "dimanche" Selon les paramétrages, dimanche == 1 !!!
le 17/02/2011, Luc a écrit : Certes, dDate as Date est indiqué, mais j'ai du modifier : dans mon cas je dois demander à l'utilisateur de saisir l'année qu'il souhaite, et je le fais par un InputBox, qui me renvoie l'année sous forme caractère...
Autre chose : après vérification sur plusieurs années, le calcul de la date de l'ascension tombe toujours le lendemain de la vraie date... Je remplace donc OR (m.dDate = m.dLundiPaques + 39) ; && ascencion par OR (m.dDate = m.dLundiPaques + 38) ; && ascencion
Pour le dimanche, il vaut mieux utiliser le second paramètre de DOW, et remplacer OR (DOW(m.dDate) = 7) && "dimanche" par OR (DOW(m.dDate, 2) = 7) && "dimanche" pour forcer le 1er jour de la semaine au lundi...
le 17/02/2011, Black Sabbath a écrit : Très bonne idée, merci
Super pour le lundi de paques et les autres dates variables.
Juste un défaut :
Si par hasard on ne fait pas Annee = YEAR(m.dDate) mais Année = Val(UneAnnéeSousFormeDeChaineDeCaractères"), VFP n'interpréte pas l'année sous la même forme numérique, et dLundiPaques vaut vide ({//}) (au moins dans le cas de 2012). En effet, dans le cas de 2012, PADL(m.iJ, 2, "0") renvoie "8." au lieu de "08". La nouvelle formule ci-dessous semble fonctionner dans tous les cas :
dLundiPaques = CTOD("^" ;
+ STR(m.Annee,4) ;
+ IIF(m.iTemp6 > 31,"/04/","/03/") ;
+ PADL(Transform(m.iJ), 2, "0") ;
) + 1 && Paques + 1 jour