IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Générer des dates comprises entre une date de début et de fin


Sujet :

Contribuez

  1. #1
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut Générer des dates comprises entre une date de début et de fin
    Bonjour,

    J'ouvre ce sujet, suite à une question intéressante que m'a posée unice et qui pourrait intéresser d'autres personnes :

    Citation Envoyé par unice
    ...
    Est-il possible d'extraire à l'aide d'une requête des dates qui se trouvent dans une table (congé) dont les champs sont [DateDebut] et [DateFin]. Ex : congé du 07/11/2016 au 10/11/2016 je souhaiterais afficher les dates du 08,09 et 10 novembre à l'aide de cette requête.
    Je retrouve bien le nombre de jours mais pas la date....
    De façon générale, voici coment je fais pour avoir les dates comprises entre [DateDebut] et [DateFin] :

    Je dispose donc d'une table T_Planning avec les champs [DateDebut] et [DateFin].

    Je crée ensuite une table d'indices nommée T_IndiceJour (IndiceJour) contenant des entiers compris par exemple entre 1 et 31 (mais on peut imaginer un intervalle plus important).

    Ensuite, je réalise une sorte de produit cartésien entre ces 2 tables dans une requête dont voici le SQL :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_Planning.IdPlanning, T_Planning.Memo, [DateDebut]+[IndiceJour]-1 AS DateJour
    FROM T_IndiceJour, T_Planning
    WHERE (T_IndiceJour.IndiceJour)<=DateDiff("d",[DateDebut],[DateFin])+1
    ORDER BY T_Planning.IdPlanning, [DateDebut]+[IndiceJour]-1;

    Cette requête va donc générer pour chaque IdPlanning les dates comprises entre [DateDebut] et [DateFin].

    Cdlt,
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 972
    Points
    83 972
    Billets dans le blog
    15
    Par défaut
    User,

    Merci pour ce partage, nul doute que cela profitera à plus d'un membre

    Toutefois, je le verrais bien dans le sous-forum Contribuez. Q'en penses-tu ?

    Cordialement
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour Denis,


    T_IndiceJour (IndiceJour) contenant des entiers compris par exemple entre 1 et 31 (mais on peut imaginer un intervalle plus important).
    En fait cet intervalle doit être au moins égal (au nombre de jours qu'il peut y avoir entre un début et sa fin) + 1.

    Donc ça marche si, a priori, on connait ce nombre.

    pour l'idée du produit cartésien.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par Malick SECK
    Merci pour ce partage, nul doute que cela profitera à plus d'un membre

    Toutefois, je le verrais bien dans le sous-forum Contribuez. Q'en penses-tu ?

    Cordialement
    Salut Malick,

    Merci pour l'idée, je l'ai transféré

    Citation Envoyé par ClaudeLELOUP
    En fait cet intervalle doit être au moins égal (au nombre de jours qu'il peut y avoir entre un début et sa fin) + 1.

    Donc ça marche si, a priori, on connait ce nombre.
    Salut Claude,

    Tu fais bien de le préciser
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Peut-être placer cette requête avant pour signaler le problème, s'il survient :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TOP 1 IIf([DateFin]-[DateDebut]<DCount("*","T_Indicejour"),"OK",[DateFin]-[DateDebut]+1) AS MinimumNécessaireIndices
    FROM T_Planning
    ORDER BY [DateFin]-[DateDebut] DESC;

    Qui donnerait ceci :

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Peut-être placer cette requête avant pour signaler le problème, s'il survient :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TOP 1 IIf([DateFin]-[DateDebut]<DCount("*","T_Indicejour"),"OK",[DateFin]-[DateDebut]+1) AS MinimumNécessaireIndices
    FROM T_Planning
    ORDER BY [DateFin]-[DateDebut] DESC;

    Qui donnerait ceci :

    Oui, en effet, on a pas toujours une idée précise de la période de plus longue durée, et en plus ça peut être compliqué de tout vérifier à l'œil, sans compter les nouvelles données qui vont être remplies
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut Générer des événements récurrents compris entre une date de début et de fin
    Bonjour à tous,

    J'applique cette méthode pour générer des rendez-vous périodiques en ajoutant dans la requête un test pour voir si je jour généré est périodique ou pas, et 2
    paramètres (DateDebut, DateFin) pour filtrer les données sur une certaine période,
    Nom : generer_events_recurrents.jpg
Affichages : 620
Taille : 362,3 Ko

    J'ajoute également un formulaire pour ajouter les événements et définir leur période, plus un module avec une fonction pour tester la périodicité des événements (fonction qui peut-être simplifiée).

    Le nombre d'indices est à 1000, qui représentent plus de 2 années, mais dans l'absolu on peut tester si ce nombre est suffisant avec la requête de Claude :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TOP 1 IIf(nz([DateFinPeriodicite],#01/01/3000#)-[DateDebutPeriodicite]<DCount("*","T_Indicejour"),"OK",nz([DateFinPeriodicite],#01/01/3000#)-[DateDebutPeriodicite]+1) AS MinimumNécessaireIndices
    FROM T_Evenement
    ORDER BY nz([DateFinPeriodicite],#01/01/3000#)-[DateDebutPeriodicite] DESC;

    Bons tests,
    Cdlt,
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut


    (nz([DateFinPeriodicite],#01/01/3000#) 

    Tu nous prépares le bug de l'an 3000 !

    D'ici là, passe de joyeuses fêtes !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message


    (nz([DateFinPeriodicite],#01/01/3000#) 

    Tu nous prépares le bug de l'an 3000 !

    D'ici là, passe de joyeuses fêtes !
    Merci !

    Je suis surtout optimiste

    Passe de bonnes fêtes également !
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. [XL-2013] Somme des cellules comprises entre deux dates
    Par meteo_man dans le forum Excel
    Réponses: 18
    Dernier message: 17/05/2016, 23h32
  2. Réponses: 6
    Dernier message: 27/09/2014, 14h18
  3. trouver une date comprise entre plusieurs lignes
    Par dinette dans le forum SQL
    Réponses: 1
    Dernier message: 12/01/2010, 20h50
  4. Réponses: 2
    Dernier message: 21/03/2007, 16h06
  5. afficher les dates comprisent entre deux dates
    Par hugobob dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/10/2006, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo