Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Contribuez
Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 18h14   #1
Membre chevronné
 
Inscription : janvier 2006
Messages : 916
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 916
Points : 733
Points : 733
Par défaut [FAQ] générer une liste de dates avec une simple requête

Bonjour

Adapté d'une idée de Tofalu utilisée dans un défi, je propose le code suivant pour générer les dates entre le 01/01/2008 (par exemple) et aujourd'hui, sans table :
Code :
1
2
3
4
5
6
SELECT  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, ID3)<=date()
ORDER BY DATESERIAL(2008+ID1, ID2, ID3)
guidav est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 08/02/2012, 18h20   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS


Joli
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 18h57   #3
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 227
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 227
Points : 9 924
Points : 9 924
Envoyer un message via Skype™ à Domi2
Effectivement, excellente contribution !

Bravo.
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 20h34   #4
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 255
Points : 5 255
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 :

Code :
DateSerial(2012,2,29) => "29/02/2012"  OK
Maintenant la date suivante générée est avec :

Code :
DateSerial(2012,2,30) => "01/03/2012"
La suivante

Code :
DateSerial(2012,2,31) => "02/03/2012"
puis,

Code :
DateSerial(2012,3,1) => "01/03/2012"
on a généré 2 fois le "01/03/2012"

Voici donc ta requête :

Code sql :
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 !
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/02/2012, 09h23   #5
Membre chevronné
 
Inscription : janvier 2006
Messages : 916
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 916
Points : 733
Points : 733
Enfer et damnation ! Très bien vu !
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h50.


 
 
 
 
Partenaires

Hébergement Web