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

Access Discussion :

Requêtes AVEC dates et AVEC conditions MAX


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Requêtes AVEC dates et AVEC conditions MAX
    Bonjour,

    J'ai un problème dans la création d'une requête.
    Je pense que vous n'aurez pas de difficulté à trouver.

    Je souhaite obtenir la requête suivante à partir de trois tables :
    le nom du salarié; Date de sortie (est null); numéro contrat (dernier: 1;2;3;4;5....); Date fin contrat; Date entrée; IDcontrat

    J'applique la condition MAX sur le numéro de contrat mais ça ne suffit pas lorsque je rajoute d'autre champ (Date fin contrat, Date entrée, IDcontrat).
    Comment contraindre access à m'afficher ces données uniquement pour les derniers contrats. Pourquoi m'affiche t-il tous les champs.

    J'ai une requête (requête 1.jpg et résultat requete2.jpg). j'ai 14 contrats (parfait! le compte est bon).
    j'utilise pour cela l'opération MAX sur le champ "numérocontrat" pour obtenir le dernier contrat signé avec notre salarié.
    J'applique également dernier dans le champ "Date fin de contrat". D'ailleurs, si je n'indique pas "dernier" alors ma liste est plus longue. Pourquoi la seule condition "Max" ne suffit pas?

    Ensuite je rajoute un nouveau champ "ID_Contrat" (requête 3.jpg et résultat requete4.jpg) pour obtenir uniquement l'ID du contrat du dernier contrat de travail. Seulement il m'affiche tous les contrats et pas seulement le dernier comme demandé avec la condition MAX. Je n'ai plus 14 réponses mais 34

    Le fait de retirer la table Fiche Temps ne change rien au résultat.

    Merci pour vos conseils précieux. Je suis impatient de vous lire;

    Cordialement,

    Guillaume
    Nom : REQUETE1.jpg
Affichages : 255
Taille : 105,6 Ko

    Nom : REQUETE2.jpg
Affichages : 251
Taille : 98,2 Ko

    Nom : REQUETE3.jpg
Affichages : 247
Taille : 97,3 Ko

    Nom : REQUETE4.jpg
Affichages : 263
Taille : 237,6 Ko

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Oui ce n'est pas toujours simple avec les dates.

    Quand je fais cela j'ai 2 stratégies :

    1. Faire une requête de regroupement qui me donne la clef de l'employé et la date maximum de ses contrats.
      Puis je fais une nouvelle requête qui fait la jointure entre cette requête qui donnes les dateMax et ma table de données sur ClefEmploye et DateContrat.
      Donc au final on a 2 requêtes.
    2. Mettre dans la colonne DateContrat un critère du type = DMax("DateContrat";"tbalContratEmploye";"[ClefEmploye]=" & [ClefEmploye]).


    Sur des petits volumes de données les 2 se valent, et je trouve la seconde solution plus directe.
    Sur des gros volumes, la 1ère est probablement plus efficace car les fonctions de domaine (DMax, DFirts, DMin, ...) ne sont pas réputées pour leur rapidité.

    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.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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