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

IHM Discussion :

ne retenir que la date la plus récente [AC-2010]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juin 2015
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Juin 2015
    Messages : 288
    Points : 87
    Points
    87
    Par défaut ne retenir que la date la plus récente
    bonjour,

    j'ai une table avec plusieurs dates de début pour une même personne, et je cherche à faire une requête sur cette table pour n'afficher que l'enregistrement le plus récent pour chaque personne

    j'ai regardé sur le forum mais n'ai rien trouvé qui répondait dans la rubrique "IHM" d'Access :-(

    J'ai essayé diverses choses mais à chaque fois Access répond "impossible d'avoir une fonction d'agrégat dans la clause WHERE..."

    voici mon code SQL issu de ma construction de requête via l'IHM Access :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_Personne.CUID_Personne, T_Personne.Nom_Personne, T_Personne.Prénom_Personne, T_Prestation.Statut_Personne, T_Site.Nom_Site, T_Ville.Nom_Ville, T_Prestation.Date_Début_Prestation, T_Prestation.Date_Fin_Prestation, T_Entité.Nom_Entité, T_Métier.Libellé_Métier, T_Société.Nom_SSII_Porteuse, T_Société.Nom_Société, [T_Personne_1].[Nom_Personne] & " " & [T_Personne_1].[Prénom_Personne] AS Expr1, T_CUID_2re.CUID_Secondaire, T_Prestation.Profil_Prestation, T_Prestation.TJM, T_Prestation.Temps_De_Travail
    FROM T_Ville INNER JOIN (T_Société INNER JOIN (T_Site INNER JOIN ((T_Personne LEFT JOIN T_CUID_2re ON T_Personne.CUID_Personne = T_CUID_2re.CUID_Principal) INNER JOIN (T_Métier INNER JOIN (T_FFS INNER JOIN ((T_Entité INNER JOIN T_Personne AS T_Personne_1 ON T_Entité.[CUID_Resp_Entité] = T_Personne_1.CUID_Personne) INNER JOIN T_Prestation ON T_Entité.ID_Entité = T_Prestation.ID_Entité_Prestation) ON T_FFS.ID_FFS = T_Prestation.ID_FFS_Prestation) ON T_Métier.ID_Métier = T_Prestation.ID_Métier_Prestation) ON T_Personne.CUID_Personne = T_Prestation.CUID_Prestation) ON T_Site.ID_Site = T_Prestation.ID_Site_Prestation) ON T_Société.ID_Société = T_Prestation.ID_Société_Prestation) ON T_Ville.ID_Ville = T_Site.ID_Ville
    WHERE (((T_Prestation.Date_Début_Prestation) Is Not Null) AND ((T_Prestation.Date_Fin_Prestation)>=Date()) AND ((T_Entité.Nom_Entité) Like "DSI*" Or (T_Entité.Nom_Entité) Like "DESI*") AND ((Max([T_Prestation].[Date_Début_Prestation]))<>False))
    ORDER BY T_Personne.Nom_Personne, T_Prestation.Date_Début_Prestation;
    --> je voudrais quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (T_Prestation.Date_Début_Prestation) Is Not Null And Max(T_Prestation.Date_Début_Prestation)
    c-à-d prendre l'enregistrement non vide qui est la plus récent (parce que "non vide" est inutile ?)

    d'avance merci pour votre aide !!

    cordt
    weyb

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 391
    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 391
    Points : 19 817
    Points
    19 817
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    Regardez du côté de la clause Having.

    Cdlt,

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    "Having" est une fausse piste car dans tous les cas il faut connaitre la valeur max qui sera si aucune condition nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... AND (([T_Prestation].[Date_Début_Prestation])=(SELECT MAX([date_début_prestation]) FROM t_prestation)))
    ceci remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND ((Max([T_Prestation].[Date_Début_Prestation]))<>False))

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 391
    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 391
    Points : 19 817
    Points
    19 817
    Billets dans le blog
    66
    Par défaut
    Citation Envoyé par galoir Voir le message
    Bonjour,

    "Having" est une fausse piste car dans tous les cas il faut connaitre la valeur max qui sera si aucune condition nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... AND (([T_Prestation].[Date_Début_Prestation])=(SELECT MAX([date_début_prestation]) FROM t_prestation)))
    Bonsoir,

    C'est vrai que le having est hors contexte, par contre ne faudrait-il pas mettre une condition dans ta sous-requête pour ne retenir que la date de l'enregistrement le plus récent pour chaque personne (ou modifier la sous-requête) ?

    C'est juste une interrogation ?

    Cdlt,

  5. #5
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Salut,
    Une capture des tables reliées pour construire la requête serait la bienvenue, parce que là j'ai du mal à visualiser.
    Pourquoi vérifier qu'une date de début de presta soit vide ? Parce que si une presta est lancée, il y a forcément une date de début ! Ou me trompe-je !

  6. #6
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juin 2015
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Juin 2015
    Messages : 288
    Points : 87
    Points
    87
    Par défaut
    bonjour,

    oui bien sûr voici la capture pour vous aider à y voir + clair :
    Nom : R_Effectifs_2019.JPG
Affichages : 247
Taille : 124,5 Ko

    et oui comme je le disais dans mon 1er post, regarder si la date n'est pas vide n'est plus forcément utile dans cette requête (mais c'est parce que c'est une copie d'une autre requête, et j'ai des prestations non confirmées donc non commencées dans ma base...)

    cordt

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 391
    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 391
    Points : 19 817
    Points
    19 817
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    Pourquoi ne pas faire simplement une requête à part basée sur la table T_Prestation avec un regroupement sur le champ "CUID_Prestation" et un max sur le champ "date_début_prestation".

    Pour ensuite insérer cette requête dans votre requête principale avec une liaison sur les champs "CUID_Prestation" et "date_début_prestation" ?

    C'est peut-être pas optimum mais c'est plus simple à comprendre il me semble

    Cdlt,

  8. #8
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juin 2015
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Juin 2015
    Messages : 288
    Points : 87
    Points
    87
    Par défaut
    why not, certes, mais je ne sais pas faire via l'IHM...
    :-(

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 391
    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 391
    Points : 19 817
    Points
    19 817
    Billets dans le blog
    66
    Par défaut
    Citation Envoyé par weyb06 Voir le message
    why not, certes, mais je ne sais pas faire via l'IHM...
    :-(
    Pourquoi via l'IHM ?

    Commencez par créer la requête regroupement à l'aide du créateur de requête, puis enregistrez la en lui donnant un nom :

    Nom : editeur_requête.jpg
Affichages : 262
Taille : 68,8 Ko

    Je vois que vous avez déjà donné un nom à votre requête principale "R_Effectifs_2019".

    Cdlt,

  10. #10
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Salut
    Puisque des presta sont enregistrées qu'elles soient effectives ou non pourquoi ne pas ajouter un champ CàC (Effective O/N).
    Peut-être plus simple dans le traitement de la req que de vouloir chercher la date la plus grande qui ne soit pas vide (ou Pas Null) par CUID !

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 391
    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 391
    Points : 19 817
    Points
    19 817
    Billets dans le blog
    66
    Par défaut
    Rebonjour,

    Je vous propose en plus de la lecture concernant les regroupements dans les requêtes :
    Requête avec regroupement

    Remplacer compte et somme par max.

    Cdlt,

  12. #12
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juin 2015
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Juin 2015
    Messages : 288
    Points : 87
    Points
    87
    Par défaut
    bonjour,

    merci pour vos différentes réponses, j'ai réussi à m'en sortir !!

    bien cordt

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

Discussions similaires

  1. Tableau Excel : retenir la date la plus récente dans l'année
    Par Nahtalie dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/04/2009, 15h15
  2. Selectionner la date la plus récente
    Par Maludi dans le forum Access
    Réponses: 2
    Dernier message: 06/02/2006, 11h56
  3. Select la date la plus récente
    Par NicoNGRI dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/09/2005, 16h45
  4. Réponses: 17
    Dernier message: 08/07/2005, 18h53
  5. Extraire la date la plus récente Database MYsql
    Par brazza dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/11/2004, 02h34

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