Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
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 14/12/2010, 20h26   #1
Membre à l'essai
 
Inscription : août 2007
Messages : 122
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : août 2007
Messages : 122
Points : 21
Points : 21
Par défaut Calcul entre dates à date

Bonjour ;

J'ai une table de congés, avec une date de début, une date de fin.
Je souhaite extraire les dates incluses dans cette table, sélectionnées de date à date.

exemple :

x pose ses congés du 12/11/2010 au 15/12/2010
y pose ses congés du 10/12/2010 au 22/12/2010
et z pose ses congés du 18/12/2010 au 05/01/2011

Je voudrai une requête qui me fait apparaître, pour une sélection du 01/12/2010 au 31/12/2010 :

pour x du 01/12/2010 au 15/12/2010
pour y du 10/12/2010 au 22/12/2010
et pour z du 18/12/2010 au 31/12/2010

le must serait que le nombre de jours ouvrables soit calculé, pour chaque ligne, entre les deux dates sélectionnées.

Là, ça dépasse mes compétences - mais j'ai essayé... en vain
C'est pourquoi je compte sur votre aide.

Merci d'avance

Sylvain
papagei2 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2010, 22h03   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Bon pour commencer on peut trouver les périodes dans la plage comme suit :

Code sql :
1
2
3
[DateDebutVacances] BETWEEN [DateDebutPeriode] AND [DateFinPeriode]
OR [DateFinVacances] BETWEEN [DateDebutPeriode] AND [DateFinPeriode]
OR [DateDebutVacances] < [DateDebutPeriode] AND [DateFinPeriode] < [DateFinVacances]

Touve les vacances qui commencent ou finissent dans la période choisie ou qui 'encadrent' la période choisie.

Pour 'Couper' les bouts qui dépassent.

Code sql :
[DateDebutVacancesCalculee]:iif([DateDebutVacances]<[DateDebutPeriode];[DateDebutPeriode];[DateDebutVacances])

Code sql :
[DateFinVacancesCalculee]:iif([DateFinVacances]>[DateFinPeriode];[DateFinPeriode];[DateFinVacances])

Maintenant il te suffit d'afficher [DateDebutVacancesCalculee] et [DateFinVacancesCalculee] pour avoir les périodes cherchées.

pour calculer le nombre de jours ouvrables je pense qu'il y a déjà un sujet là dessus soit dans la FAQ soit dans le forum lui-même. C'est un peu plus compliqué que le nombre de jours car il faut tenir compte des congés légaux à date fixe (ex pour la France : 1er mai, 14 Juillet) et ceux à date variable (ex pour la france : lundi de paques, vendredi de paques) et cela se fait très bien avec une fonction définie par l'utilisateur.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2010, 22h11   #3
Membre à l'essai
 
Inscription : août 2007
Messages : 122
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : août 2007
Messages : 122
Points : 21
Points : 21
Par défaut un peu de délais...

Merci marot_r

Je vais essayer ça en fin de semaine, probablement ce week-end.
ça correspond effectivement à ce que je souhaite.
Je vous tiens au courant.

En attendant, d'autres suggestions ou commentaires sont les bienvenus

Bonne soirée

Sylvain
papagei2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 22h29   #4
Membre à l'essai
 
Inscription : août 2007
Messages : 122
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : août 2007
Messages : 122
Points : 21
Points : 21
Par défaut C'est Bon !

Bonsoir marot_r

Tout d'abord, meilleurs voeux à tous pour cette nouvelle année !

Et l'année commence bien, car tes instructions fonctionnent !
J'ai un peu galéré sur la première instruction.

Code :
1
2
3
[DateDebutVacances] BETWEEN [DateDebutPeriode] AND [DateFinPeriode]
OR [DateFinVacances] BETWEEN [DateDebutPeriode] AND [DateFinPeriode]
OR [DateDebutVacances] > [DateDebutPeriode] AND [DateFinPeriode] < [DateFinVacances]
Il y a une erreur sur un signe, mais cela m'a permis de comprendre la fonction, l'appliquer et l'intégrer plus facilement.

Quelques modif à appliquer aussi entre les iif et VraiFaux, BETWEEN et Entre... Enfin, ça fonctionne.

Merci encore

Sylvain
papagei2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 22h32   #5
Membre à l'essai
 
Inscription : août 2007
Messages : 122
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : août 2007
Messages : 122
Points : 21
Points : 21
Par défaut CAlcul du nombre de jour

Bonsoir à tous ;

Je reviens vers vous pour le cacul du nombre de jours entre deux dates.

J'ai créé dans une table un calendrier des jours ouvrables / fériers (1 pour travaillé, 0 pour férier)

à partir de ma table congés dateDébut et DateFin, comment puis-je cumuler le nombre de 1 entre ces deux dates ?

Merci de votre aide

Sylvain
papagei2 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/01/2011, 14h41   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 456
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 456
Points : 7 530
Points : 7 530
Code sql :
OR ([DateDebutVacances] < [DateDebutPeriode] AND [DateFinPeriode] < [DateFinVacances])

Il n'y a pas d'erreur de signe, ceci gère le cas où ta période choisie est entièrement comprise dans une période de vacances.

Avec ce que tu as mis tu vas rammasser l'équivaent de
Code sql :
1
2
[DateDebutVacances] BETWEEN [DateDebutPeriode] AND [DateFinPeriode] 'Vacances qui commencent dans la période
OR [DateFinVacances] BETWEEN [DateDebutPeriode] AND [DateFinPeriode] 'Vacances qui finissent dans la période
.

Pour le calcul des jour travaillés as-tu fais la recherche que je te suggérais ?

Si tu as un calendrier qui couvre toutes les dates 365j ou 366j/an, le plus simple est d'additionner les indicateurs du calendrier qui sont compris entre date de début et date de fin. Cela va te donner exactement le nombre de jours travaillés.

Tu peux simplement faire un produit croisé entre ta requête des périodes et ta table calendrier. Ce n'est pas la méthode la plus efficace mais si tu n'as pas un gros volume de données cela ne devrait pas vraiment avoir d'impact.

Pour la sélection tu mets [dateCalendire] between [dateDebut] and [dateFin].

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/01/2011, 19h18   #7
Futur Membre du Club
 
Medi Basm
Enseignant Chercheur
Inscription : septembre 2008
Messages : 18
Détails du profil
Informations personnelles :
Nom : Medi Basm
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : Enseignement

Informations forums :
Inscription : septembre 2008
Messages : 18
Points : 18
Points : 18
Envoyer un message via MSN à medibasm Envoyer un message via Yahoo à medibasm Envoyer un message via Skype™ à medibasm
Par défaut remerciement

Merci marot_r et merci papagei2 cette discussion m'était très utile dans mon boulot , c'est très intéressant
je m'interresse beaucoup à access et je vais essayer de rechercher à fond de tout ce qui se trouve dans ce site formidable !!!
medibasm 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 02h02.


 
 
 
 
Partenaires

Hébergement Web