Bonjour,
Tout d'abord félicitations pour cette idée ingénieuse qui consiste à s'affranchir d'une table d'indices en utilisant une table système déjà présente dans la base.
Mais aussi bravo pour la mise en place de la requête à partir de l'identifiant de cette table.
Toutefois, il me semble qu'il faut au moins 31 enregistrements dans la table système, tu me diras que ce n'est pas réellement un problème.
Par contre, il faut mettre un distinct dans la requête pour générer des dates uniques pour le calendrier.
Je m'explique :
Supposons que nous soyons le 29/03/2012 et prenons le 29 février 2012, généré dans la requête avec le code :
DateSerial(2012,2,29) => "29/02/2012" OK
Maintenant la date suivante générée est avec :
DateSerial(2012,2,30) => "01/03/2012"
La suivante
DateSerial(2012,2,31) => "02/03/2012"
puis,
DateSerial(2012,3,1) => "01/03/2012"
on a généré 2 fois le "01/03/2012"
Voici donc ta requête :
1 2 3 4 5 6
| SELECT DISTINCT DATESERIAL(2008+ID1, ID2+1, ID3+1) AS LADATE FROM
(SELECT TOP 5 (SELECT Count(ID) as a FROM MSysObjects TA WHERE TA.ID<TA1.ID) AS ID1 FROM MSysObjects TA1 ORDER BY ID) T1 ,
(SELECT TOP 12 (SELECT Count(ID) FROM MSysObjects TA WHERE TA.ID<TA1.ID) AS ID2 FROM MSysObjects TA1 ORDER BY ID) T2,
(SELECT TOP 31 (SELECT Count(ID) FROM MSysObjects TA WHERE TA.ID<TA1.ID) AS ID3 FROM MSysObjects TA1 ORDER BY ID) T3
WHERE DATESERIAL(2008+ID1, ID2+1, ID3+1)<=date()
ORDER BY DATESERIAL(2008+ID1, ID2+1, ID3+1) |
Encore bravo !
Partager