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 :

Mauvais "Compte()" dans un état complexe [AC-2010]


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 165
    Points
    165
    Par défaut Mauvais "Compte()" dans un état complexe
    Bonjour,

    J'ai un état un peu compliqué avec plusieurs niveau de regroupement dont les adhérents par service.

    Je voudrais afficher le nombre d'adhérent dans chaque service mais le comptage sur la base du matricule qui est un identifiant unique s'avère faux.

    Tout se passe comme si c'est le nombre de lignes contenues dans le détail du Regroupement sur Matricule qui est pris en compte et le nombre de matricules distincts (cf les 2 copies d'image ci-dessous).

    D'avance merci pour votre aide et pour vos suggestions.

    1) Copie de l'aperçu de l'état :
    Nom : Capture_Pb_État_04b.PNG
Affichages : 273
Taille : 169,6 Ko

    2) Copie de la structure de l'état :

    Nom : Capture_Pb_État_04c.PNG
Affichages : 243
Taille : 34,4 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.

    Si tu fais un regroupement par matricule, cela veut sans doute dire que le matricule est présent sur chacune des lignes de profession.
    Access ne compte pas le nombre d'occurrences uniques mais le nombre de lignes de détail qui contiennent des valeurs.

    À mon avis, tu peux t'en sortir de 2 manières :

    • Remplacer la partie détail par un sous-rapport qui présente les professions associées à une personne.
      La source de ton état ne présente plus que les personnes.
    • Faire le comptage dans la source de données avec quelque chose comme DCount("NoMatricule"; "TaSource1"; "[section]=""" & [TaSource2].[Section] & """") et afficher cette valeur.
      Où TaSource1 ne te donne que les matricules et les sections et TaSource2 te donne la section qui t'intéresse présentement.

      Ce serait mon choix..


    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.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 165
    Points
    165
    Par défaut
    Bonjour marot_r,

    Merci pour ces réponses. Tu as parfaitement compris ce que je voulais dire et tes solutions sont parfaitement correctes.
    Cependant chacune a des avantages mais surtout des inconvénients qui me les font rejeter.

    Les voici :
    • Le sous-rapport est simple mais le temps d'affichages (plusieurs minutes) est prohibitif.
    • DCount("NoMatricule"; "TaSource1"; "[section]=""" & [TaSource2].[Section] & """")
      risque de ne pas suivre si des différents filtres sont appliqués ultérieurement sur les autres champs.


    En conséquence j'ai fini par opter pour la solution suivante :
    Dans la requête de base, j'ai rajouter un champ calculé qui est le nombre de "professions" associées à un matricule.
    Puis dans le rapport, j'utilise DSum(1/[NbrProf]) en prenant toutes les précautions pour éviter les divisions par 0.
    J'obtiens ainsi le bon nombre de personnes dans chaque section.

    Bien cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/12/2010, 17h02

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