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

Requêtes et SQL. Discussion :

Regroupement par date (ne pas prendre l'heure en compte !) [AC-2013]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut Regroupement par date (ne pas prendre l'heure en compte !)
    Bonjour,

    Je m'arrache les cheveux !

    Je souhaite créer une requête qui me compte le nombre de pièces produite dans la journée <-- BASIQUE

    Pour cela j'ai mit comme opération : "Compte" sur le numéro des pièces et comme opération "Regroupement" sur les dates de fabrication, j'ai également mit dans critère, sur les dates de fabrication : "Date()".

    Access devrait donc regrouper la date du jour sur une cellule et me donner en face le nombre de pièces... ET BIEN NON...

    Déjà il ne comprend pas qu'avec le critère date() je souhaite afficher les pièces de la date du jour (il ne m'affiche rien), je suis obligé de mettre Entre date() et date()-1, du coup je récupère pas les pièces du jour mais celle de la veille... <-- Problème 1

    Deuxièmement quand j'utilise Entre date() et date()-1, pour récupérer les résultats, il ne me regroupe pas les dates, elles sont toutes séparées... <-- Problème 2

    C'est donc la que je pense avoir identifié que le problème est que vue que les heures sont différentes pour chaque pièce, access ne veut pas regrouper les dates...

    Comment lui dire, dans le critère, de juste regarder la date et pas l'heure ?

    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    Salut,

    la date et l'heure sont stockees sous une forme numerique decimale, la partie entiere donnant la date, la partie decimale les heures, minutes et secondes.

    Pour ne recuperer que la partie date, tu peux caster la date en Long par exemple :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE CLng(TonChampDate)=CLng(Date())
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    J'ai déjà résolu mon Problème 1 en utilisant la fonction Day(puis la date)

    Pour la solution que tu me propose, j'ai le code SQL suivant :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(OF.OF_Num) AS CompteDeOF_Num, OF.OF_Date_Estampage
    FROM [OF]
    GROUP BY OF.OF_Date_Estampage
    HAVING ((Day([OF_Date_Estampage])=Day(Date())));

    Quand j'ajoute le WHERE pour convertir en Long j'ai un message d'erreur comme quoi il y a un opérateur absent sur la ligne du WHERE.

    Pourquoi ?

    Merci
    Cordialement

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    Logique, vu que tu fais un calcul dessus, ca doit donc plutot apparaitre dans le HAVING.

    Attention la fonction Day te retourne le numero du jour, donc Day(#12/31/2016#)=Day(#03/31/2000#)

    Ce qui est faux pour ton besoin =]
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Mince !! Comment avoir le jour le mois et l'année ?

    Seulement Date() plus ta combine de conversion en Long ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    As-tu essayé avant de demander ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    J'ai fait comme tu m'a dit, j'ai mit dans le HAVINg :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(OF.OF_Num) AS CompteDeOF_Num, OF.OF_Date_Estampage
    FROM [OF]
    GROUP BY OF.OF_Date_Estampage
    HAVING ((CLng([OF_Date_Estampage])=CLng(Date())));

    Et la j'ai le message d'erreur le plus pourri de la terre : "Utilisation incorrect du Null"...


  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    As-tu des enregistrements pour lesquels la date n'est pas renseignee ? Si c'est le cas quelle valeur doit etre prise en compte ?

    on peut egalement simplifier ton SQL en enlevant les parenthese en trop

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(OF.OF_Num) AS CompteDeOF_Num, OF.OF_Date_Estampage
    FROM [OF]
    GROUP BY OF.OF_Date_Estampage
    HAVING CLng([OF_Date_Estampage])=CLng(Date());
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Bien vu, il y a certains enregistrement pour lesquels le champ date est vide.

    Comment faire pour dire à ma requête de ne pas les prendre en compte pour que celle-ci s’exécute enfin correctement ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    En utilisant la fonction Nz
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HAVING CLng(Nz([OF_Date_Estampage],0))=CLng(Date());
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Merci ! Ca compil correctement grace au Nz bien vu ! Cependant, j'ai bien les enregistrements des dernières 24h, mais ceux-ci ne sont toujours pas regroupés...

    J'aurais également une autre question de compréhension qui rejoint ta solution.

    La date est donc contenu dans une partie entière et une partie décimale, comme tu me l'as dit.

    Si je veux poser comme critère par exemple les 6 dernières heures d'aujourd'hui, il me suffit d'utiliser la fonction date() ? Comment faire pour dire Entre date() et date()-6h et qu'Access comprenne que je veux me placer aujoud'hui sur les 6 dernières heures ?

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    C'est simple 1h = 1j/24

    Donc les 6 dernieres heures de la date du jour (aujourd'hui de 18h00 à 24h00)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Between Date+0.75 and Date+1
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  13. #13
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Aaah je comprend.

    Cependant ce que je ne comprend pas c'est que quand je fais un test en mode création de requête. Dans le critère sur le champ OF_Date8EStampage j'entre : Entre Date()+0,75 Et Date()+1

    J'éxécute et la requête ne me donne rien.

    Pourtant j'ai une dizaine d'enregistrement dans la table corrrespondant à cte période (6 dernières heures).

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    attention, ici on parle de aujourdhui 18h00 a aujourdhui minuit, pas des 6 dernieres heures

    Si tu veux les 6 dernieres heures ca sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    between now() - 0.25 and now()
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  15. #15
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Ça fonctionne ! J'avoue n'avoir pas compris du premier coup le jeu avec les heures...

    Par contre je suis un peu bloqué dans ce que je souhaite développer. En effet j'ai besoin des heures pour définir la plage sur laquelle je veux travailler, mais je veux aussi qu'Access me regroupe toute les dates identiques en un même champ...

    Parce que la j'ai bien les enregistrements des 6 dernières heures, mais encore une fois tous séparés... Peut être une requête combinée pour que cela fonctionne ? (Union ?)

  16. #16
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    Tu peux tres bien faire ceci avec Clng :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select COUNT(*) AS NB, CLNG(TaDateHeure) As Jour
    FROM TaTable
    WHERE TaDateHeure BETWEEN Now-0.25 AND Now
    GROUP BY CLNG(TaDateHeure)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  17. #17
    Membre du Club Avatar de Boxtell
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2016
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Super merci, j'ai tout ce qu'il me faut pour calculer ma charge horaire.

    Sujet Résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2010] Regrouper par Date sans l'heure
    Par joe.levrai dans le forum Outlook
    Réponses: 2
    Dernier message: 15/05/2014, 10h27
  2. Etat regroupement Par date par jour
    Par bobosh dans le forum IHM
    Réponses: 2
    Dernier message: 01/08/2008, 09h03
  3. Requete avec regroupement par mois.. ou pas ?
    Par flamby6969 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/06/2008, 12h43
  4. Regroupement par date dans une requete access
    Par ifrpi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/02/2008, 03h32
  5. Réponses: 5
    Dernier message: 29/09/2004, 11h05

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