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 :

[Etat]compter des enregistrements suivant critères dans un état


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut [Etat]compter des enregistrements suivant critères dans un état
    Bonjour! J'ai créé un état msaccess (access 2000-2003) dans lequel je voudrais compter des fiches dont le champ codesuite correspondant à 01 par exemple. Comment faire ?

    Si je mets dans source control; "=compte[(codesuite)], il me comptera évidemment tous les enregistrements. Si j'ajoute ="01", il acceptela syntaxe mais rien ne change au résultat.

    Quelle procédure puis-je employer pour arriver à ce résultat sélectif ?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,

    Soit tu fais un Dcount() dans un controle (voir la syntaxe dans l'aide)

    Soit un =compte() dans le pied de groupe de ton champ critère.

    C'est au choix.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Moyen d'avoir un exemple ?
    Je suis allé voir ces deux fonctions mais cela ne donne pas le résultat escompté. Pourtant, cela devrait être simple si on pouvait seulement mettre =critère dans les propriétés source de l'expression

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,

    La fonction Dcount() permet de mettre un critère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Dcount("NumeroUnique";"table ou requete";"CodeSuite='01'")
    ou NumeroUnique est un champ ne contenant pas de doublon.

    Cette fonction est à placer dans la source d'un controle de texte.

    La méthode du pied de page est interresante dans le cas ou tu as plusieurs CodeSuite. Toujours dans un controle de texte mettre la fonction =compte(*)

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Les commande dcount ou cptdom ne semblent pas acceptées

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Peux-tu nous poster le code de ton dcount ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    C'est gentil, je vais vous détailler ce que je veux faire exactement.

    J'ai une base de données dans laquelle j'ai créé 3 tables.
    InspNUM dans laquelle je reprends une fois le nom des inspecteurs et auquel pour chacun correspond un n°

    Une table dossiers reliée au champ inspnum de la table Inspnum(n° d'inspecteur) avec le champ IN_INSPECTNUM de la table dossiers. Relation donc de un à plusieurs. Un inspecteur peut avoir plusieurs dossiers. Le dossier est représenté par le champ IN_NUMDOSSIER qui est repris une fois dans cette table.

    Une table resultaten qui représente les différentes enquêtes effectuées.
    Cette table est reliée par les champs IN_NUMDOSSIER des tables dossiers et résultaten. Relation de un à plusieurs de la table dossiers vers resultaten.

    Dans la table resultaten, j'ai un champs RE_CODESUITE qui peut être égal à 01,02 jusque 07.
    Je voudrais simplement pouvoir compter les différents RE-CODESUITE dans un même état. En outre, obtenir également ces résultats, par Province, réseau, district et n° d'inspecteur.

    Pour cela j'ai créé un état basé sur une requête dans laquelle, j'ai inséré les 3tables, les champs province, réseau, district étant dans inspecnum et le champ RE_CODESUITE se trouvant dans resultaten.


    Le but est de faire compter par niveau de regroupement les re_CODESUITE=01,ceux =02 et ainsi de suite à chaque niveau de regroupement

    j'essaie en créant à chaque niveau une zone de texte en insérant l'expression
    à chaque regroupement
    =CpteDom("[RE_CODESUITE]","resultaten","[RE_CODESUITE]='01'")

    et je voudrais faire cela pour les 6 autres valeurs, mais ça ne fonctionne pas.

    J'espère avoir été assez clair

    Merci d'éclairer la lanterne d'un débutant

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    La fonction Dcount ou CpteDom est la même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("[RE_CODESUITE]","resultaten","[RE_CODESUITE]='01'")
    La syntaxe que tu as mis en place compte tous les CodeSuite = 01 quelque soit le regroupement. En effet celle-ci est totalement autonome.

    Le CodeSuite doit être conditionné par le regroupement en cours.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("[RE_CODESUITE]","resultaten","[RE_CODESUITE]='" & reports.Monreport.moncontrole & "'")
    ou monreport est le nom de ton état et moncontrole est le nom du controle contenant la valeur codesuite dans ta zone de regroupement.

    Note que la partie condition de la fonction à la même syntaxe que la clause where d'une requete. Tu peux donc te servir de l'exemple d'une requete pour la composer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [RE_CODESUITE]='01' AND [ChampRegroupement]='valeur de regroupement'
    Espérant t'avoir éclairé sur l'utilisation des fonctions de regroupement en général.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Même pour compter les champs ne comportant que les suites reprenant 01 par exemple, la syntaxe =CpteDom("[RE_CODESUITE];"resultaten";"[RE_CODESUITE]= '"01" ') est refusée et je reçois comme message quand je veux voir l'aperçu de mon état
    "La syntaxe de l'expression entrée n'est pas correcte
    Vous avez sans doute entré un opérande sans opérateur.
    Cette expression, je l'ai entrée dans la source contrôle d'une zone de texte.

    Je vous rappelle que l'état est basé sur une requête appelée SUITE1 et qui comprend trois tables:

    les tables inspnum et dossiers reliées avec une relation un à plusieurs avec le champ
    inspnum de la table inspnum et in_NUMDOSSIER de la table dossiers

    La table dossiers est reliée à la table resultaten par les champs IN_NUMDOSSIER de la table dossiers et le champ du même nom dans la table resultaten(aussi relation un à plus). Si dans le code de la zone texte, je remplace le nom de la table resultaten dans laquelle se trouve le champ RE_CODESUITE par le nom de la requête SUITE1,sur lequel l'état se base; le message d'erreur est identique.

    Merci beaucoup!

  10. #10
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    J'ai trouvé, Merci!

  11. #11
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Oui, cela fonctionne indépendemment des groupes. L'erreur était que je devais remplacer la virgule par le point virgule.

    Le problème que j'ai encore c'est que quand j'applique le code
    =CpteDom("[RE_CODESUITE]";"resultaten";"[RE_CODESUITE]='01'" & États.suite1.Texte88 & "Provincie")

    Le code est bien accepté mais ddans ma zone de texte en aperçu j'ai #Nom?

    Que dois-je mettre en bout de code. Le champ de regroupement comme j'ai fait ou autre chose ?

    Merci


    On y arrive

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,

    Oui le ; au lieu de ,

    Le problème est ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ..."[RE_CODESUITE]='01'" & États.suite1.Texte88 & "Provincie")
    D'une part il faut écrire

    Etats.suite1.texte88 (états ne prend pas d'accent)

    Ensuite que contient texte88 ? et surtout suite1 est-ce bien le nom de l'état courant ?

    Ici lors de l'interprétation de la condition voici ce que tu obtiendrais (dans le cas ou texte88 contient TOTO.

    "[RE_CODESUITE]='01'TOTOProvincie"
    Il manque quelque chose.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    oui mais quoi quand j'indique toute la procédure
    =CpteDom("[RE_CODESUITE]";"resultaten";"[RE_CODESUITE]='01'" & États.codesuite2.Texte1 & "Provincie")

    Oui, les noms on changé car si access accepte bien le code quand je demande l'aperçu, access m'ouvre une boîte de dialogue de ce genre
    Microsoft Office Access a rencontré un problème et doit être fermé. Nous vous prions de nous excuser pour le désagrément encouru.
    et il se ferme

    resultaten est la table reprise dans la requête SUITE1 sur laquelle s'appuie mon état et où se trouve le champ RE_CODESUITE

    Texte1 est la zone de texte où se trouve le code repris plus haut
    Provincie est le champ d'une des tables de la requête qui sert au regroupement.

    Je suis embêtant, hein, mais je dois dire que jusqu'à présent, on m'a toujours bien aidé ici et pour des problèmes bien plus complexes.

    Il pourrait y avoir une erreur dans le programme access, mais j'ai le même problème si j'essaie avec la version que j'ai faite en access2000.

    Merci quand même; lol. J'arrive quand même déjà à le faire indépendamment des groupes
    =CpteDom("[RE_CODESUITE]";"resultaten";"[RE_CODESUITE]='01'") par exemple; mais c'est la suite qui foire.

  14. #14
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Je suis embêtant, hein, mais je dois dire que jusqu'à présent, on m'a toujours bien aidé ici et pour des problèmes bien plus complexes.
    Faut croire que je suis pas au niveau...
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  15. #15
    Membre à l'essai
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Sürement pas; mais j'ai souvent remarqué que quand on pose des conditions plus ou moins longues dans la source controle d'une zone de texte , cela pose pas mal de programmes

    Ici, comme j'ai access en Français, tout se traduit autopmatiquement et Etatx s'écrit avec une majuscule automatiquement.

    Si j'écris Etats, l'expression n'est pas reconnue. Il en est de même pour d'autres expresions qui sont traduites avec des accents et pas toujours bien interpretées lors de l'exécution.

    Je me demande si je ne ferai pas mieux de faire la même chose en code pur car là tout reste en Anglais ou alors une fois essayer avec un access en langue anglaise.

  16. #16
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,

    Il est vrai que mettre une expression longue dans un controle n'est pas très pratique (debogage absent, édition pénible). Personnellement je préfére de loin le code VBA pour des fonctions longues.

    En ce qui concerne Etats avec ou sans accent il se peut que ce soit un problème de correction automatique (à vérifier en la désactivant dans le options je crois). En tout cas les mots clefs ACCESS ne prennent JAMAIS d'accent.

    C'est quand même bizarre qu'il te pose ce type de problème de plus le message que tu reçois avant la fermeture indique que l'installation a des problèmes. Si tu peux faire un test sur un autre poste fait-le.
    Sinon pour le corriger essaye les services packs (système) et service release (office).

    Si tu penses que le code pourrait pallier le problème la syntaxe de cette commande est pratiquement identique à part.

    cptdom s'écrit dcount
    les ; sont à transformer en ,
    Etats.Codesuite2 s'écrit Me.

    Mais dans tous les cas il faudra écrire une condition valide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("[RE_CODESUITE]";"resultaten";"[RE_CODESUITE]=""" & me.Re_codeSuite & """ AND  [Provincie] =""" & me.Provincie & """)
    Ici on compte codesuite
    si il est égal au codesuite courant
    et
    si le champ Provencie est égal à la province courante.

    Espérant que tu y vois plus clair.

    Petite méthode que j'utilisais quand j'ai débuté :
    Fait le compte dans une requête via le générateur de requête. une fois celle-ci fonctionnelle, utilise la condition where comme modèle pour concevoir tes fonctions de domaine. C'est plus long mais au bout d'un moment tu en auras tellement l'habitude que tu pourra t'affranchir du générateur. Garde bien en mémoire que la condition Where des fonctions Domaine à la même syntaxe qu'un condition Where SQL.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 126
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par loufab
    Bonjour,


    Petite méthode que j'utilisais quand j'ai débuté :
    Fait le compte dans une requête via le générateur de requête. une fois celle-ci fonctionnelle, utilise la condition where comme modèle pour concevoir tes fonctions de domaine. C'est plus long mais au bout d'un moment tu en auras tellement l'habitude que tu pourra t'affranchir du générateur. Garde bien en mémoire que la condition Where des fonctions Domaine à la même syntaxe qu'un condition Where SQL.

    Cordialement,
    Bonjour,
    Je suis tout nouveau et j'ai le même pb que Crouic5. Malgrès tes excelentes explication je ne parviens pas à mes fins.
    En revanche je sais faire des requêtes : Peux tu m'expliquer comment tu fais ave l'éditeur de requête ?

    Merc d'avance

    SBranchu

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/10/2013, 15h40
  2. Réponses: 2
    Dernier message: 30/11/2007, 17h54
  3. [VBA]Compter les enregistrement suivant critère d'un champs
    Par wachoo31 dans le forum VBA Access
    Réponses: 9
    Dernier message: 27/04/2007, 07h42
  4. Etat : compter des enregistrements
    Par pmelen dans le forum IHM
    Réponses: 2
    Dernier message: 11/04/2007, 12h04
  5. Réponses: 1
    Dernier message: 30/03/2007, 08h44

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