Requête ACCESS

Bonjour,

Bonjour,

Je dispose d'une table avec entre autres les champs suivants :

Nodem / NuméroAuto
Objet / Mémo
Agent / Texte
DateDemande / Date/Heure
FinPrévueLe / Date/Heure
ServiceFaitLe / Date/Heure

Je souhaiterais batir une requête m'affichant le nombre de demandes réalisées par un agent entre deux dates.
Ma requête me donne bien la main pour entrer le nom de l'agent, la date de début et la date de fin mais le résultat ne me convient pas dans la mesure ou il me renvoit tous les enregistrements.

Exemple AF pour la période du 01/01/2010 au 31/01/2010

Agent / DateDemande
AF / 05/01/2010
AF / 07/01/2010
AF / 08/01/2010
AF / 12/01/2010
AF / 14/01/2010
AF / 21/01/2010
AF / 22/01/2010

Ce que j'aimerais obtenir :

Agent Nombre de demandes
AF 7

Merci d'avance pour votre aide
Configuration: Windows XP / Internet Explorer 7.0

11 réponses

  1. Bonjour,

    Il faut utiliser la fonction count (dans le select).
    Exemple :
    select Agent, count(*) as Nombre de demandes
    from matable
    where agent = "AF"

    NB : je ne sait pas comment est construite ta requête, c'est juste un exemple
    0
    1. Merci pour ta réactivité, je vais t'en dire un peu plus.

      J'ai juste deux champs dans ma requête.

      Champ : Agent
      Table : Demandes
      Critères : [indiquez les initiales de l'agent]

      Champ : DateDemande
      Table : Demandes
      Critères : Entre [tapez la date de début] et [Tapez la date de fin]

      Si je l'affiche en SQL ça me donne :
      SELECT Demandes.Agent, Demandes.DateDemande
      FROM Demandes
      WHERE (((Demandes.Agent)=[indiquez les initiales de l'agent]) AND ((Demandes.DateDemande) Between [Tapez la date de début] And [Tapez la date de fin]));
      0
      1. Alors ça fait quelque chose comme :

        SELECT Demandes.Agent, count(Demandes.DateDemande) as Nombre de demandes
        FROM Demandes
        WHERE (((Demandes.Agent)=[indiquez les initiales de l'agent]) AND ((Demandes.DateDemande) Between [Tapez la date de début] And [Tapez la date de fin]));
        0
        1. merci mais il doit me manquer un ptit qque chose pour que ça fonctionne !

          J'ai les messages suivants lorsque je colle ce code dans une nouvelle requête :

          1. Dans l'instruction SELECT un mot réservé ou un argument est mal orthographié ou absent ou la pontuation est incorrecte. Resolu, en mettant entre crochets l'expression Nombre de demandes.

          2.Vous avez essayer d'exécuter une requête ne comprenant pas l'expression spécifiée "Agent" comme une partie de la fonction d'agrégat. là, je ne vois pas !
          0
          1. Re,

            Essaye d'ajouter group by Demandes.Agent a la fin de la requête.
            0
            1. Et count (*) au lieu de count(Demandes.DateDemande)
              0
              1. Hélas toujours rien, voilà ma requête et toujours le pb d'agrégat

                SELECT Demandes.Agent, Count(*) AS [Nombre de demandes]
                FROM Demandes
                GROUP BY Demandes.Agent
                HAVING (((Demandes.Agent)=[indiquez les initiales de l'agent]) AND ((Demandes.DateDemande) Between [Tapez la date de début] And [Tapez la date de fin]));

                merci en tout cas
                0
                1. Re,
                  Essaye :
                  SELECT COUNT( Demandes.Agent), Count( Demandes.Agent) AS "Nombre de demandes"
                  0
                  1. Rien à faire !!!

                    Peut être qu'en te joignant le fichier ce sera plus simple
                    http://www.cijoint.fr/cjlink.php?file=cj201002/cij0JdXROi.zip

                    Merci
                    0
                    1. Re,

                      Désolée je n'ai pas access :'(
                      0
                      1. tant pis, je vais essayer de m'en sortir seul.
                        Je reformulerai peut êre ma requête sur ce même forum
                        Merci quand même
                        0