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 :

Créer des fonctions qui retournent des valeurs dans un dashboard [AC-2016]


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut Créer des fonctions qui retournent des valeurs dans un dashboard
    Bonsoir!
    Je veux créer des fonctions qui retournent des valeurs dans mes formulaires sous_menu. Par exemple, dans le formulaire F_GestionDesEleves, j'ai des zones de textes qui devraient afficher les valeurs retournées par ces fonctions.Pour afficher l'effectif total du collège dans TxtEffectifEtab du Formulaire F_GestionDesEleves, nous avons réussi à créer la fonction getEffectifEtab() que nous avons réutilisée dans le deuxième code. Aucune difficulté pour y parvenir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function getEffectifEtab() As Long
    Dim res As Long
    res = Nz(DCount("Eleve_id", "T_Eleve"), 0)
    getEffectifEtab = res
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Load()
    Dim isConnect As Boolean
    isConnect = IIf(nomUser_G <> "", True, False)
    If (isConnect = True) Then
    hasAccess User_id_G, Me
    Me.TxtEffectifEtab = getEffectifEtab()
    Else
    DoCmd.Close acForm, Me.Name
    DoCmd.OpenForm ("F_login")
    End If
    End Sub
    Maintenant je voudrais créer des fonctions qui me retournent pour chaque niveau(6ème, 5ème, 4ème et 3ème) le nombre de filles, de garçons et l'effectif total dans le niveau. Pour chaque niveau nous avons créer 3 zones de textes pour afficher ces valeurs.

    djibysadji

  2. #2
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Bonjour,
    pourquoi créer une fonction pour cela ??

    Tu peux mettre directement la formule dans les zones de texte concernées, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id", "T_Eleve"), 0)
    Pour les autres zones de texte (niveau / sexe), tu crées des zones de textes et tu adapte ton dcount avec une clause where
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id", "T_Eleve","[champ niveau]=" & forms!TonFormulaire!LecontroleNiveau & " AND [champ sexe]=1"), 0)
    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut
    Bonjour!
    Suite à votre réponse, j'ai obtenu le code ci-dessous mais j'ai une erreur de syntaxe: Vous avez entré un opérateur, un opérande, entré un caractère ou une virgule non valides ou entré du texte sans le délimiter par des guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id",  "T_eleve", "[Niveau]=" & forms!FE_Gestion_eleves!TxtEffectifFilles6  & " AND [Sexe]=1"), 0)

  4. #4
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    =Nz(DCount("Eleve_id", "T_eleve", "[Niveau]=" & forms!FE_Gestion_eleves!TxtEffectifFilles6 & " AND [Sexe]=1"), 0)
    Il faut que tu remplaces les "," par des ";"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id";  "T_eleve"; "[Niveau]=" & forms!FE_Gestion_eleves!TxtEffectifFilles6  & " AND [Sexe]=1"); 0)
    A+

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut
    Bonjour!
    Nous avons opéré les changements suggérés mais à l'exécution nous avons l'erreur #type dans la zone de texte.
    Dans T_eleve, le champ Sexe est un FK que nous avons transformé en liste déroulante pour entrer "F" ou "M" selon que l'élève est une fille ou un garçon.

  6. #6
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Il faut adapter la formule à tes type de champ...

    Donc si dans ta table t_eleve, le champ sexe est de type texte, la formule sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id";  "T_eleve"; "[Niveau]=" & forms!FE_Gestion_eleves!TxtEffectifFilles6  & " AND [Sexe]='F' "); 0)
    A+

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut
    Bonjour!

    L'erreur est toujours là!

  8. #8
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Alors,
    quel est le type de champ de :
    [Niveau]
    [Sexe]

    A+

  9. #9
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut
    Bonjour!
    Les champs [Niveau] et [Sexe] sont tous les deux des FK et de type numérique. Ce sont des listes déroulantes alimentées à partir des tables T_Niveau et T_Sexe.

  10. #10
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Donc si c'est du numérique, il faut reprendre les valeurs des champs

    Dans la table t_sexe, quelles sont les valeurs ?

    A+

  11. #11
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut
    Dans T_Sexe nous deux champs: id et Sexe. id est un PK (NuméroAuto) et Sexe est de type texte.
    Pour le champ Sexe nous avons les F pour les Fille et M pour les garçons.

    Dans T_Niveau nous avons deux champs aussi: Niv_id, PK(NuméroAuto) et Niv_libelle(texte)
    Pour Niv_libelle nous avons 6ème, 5ème, 4ème et 3ème.

  12. #12
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Donc tes champs dans la table T_eleve sont de type numérique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id";  "T_eleve"; "[Niveau]=" & forms!FE_Gestion_eleves!TxtEffectifFilles6  & " AND [Sexe]=1"); 0)
    Par contre, que contient forms!FE_Gestion_eleves!TxtEffectifFilles6 ? Vu le nom j'ai un doute, ce ne serait pas la zone de texte qui doit contenir le résultat ?
    Il faut que le controle de ce formulaire contienne le niveau (du moins la clé).

    A+

  13. #13
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut
    C'est la zone de texte TxtEffectifFilles6 qui doit contenir le résultat effectivement.

  14. #14
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Donc ça ne peut pas fonctionner, tu fais appel à elle même.

    Il faut que tu mettes cette formule dans une zone de texte, TxtEffectifFilles6 si tu veux

    Pour que ta formule fonctionne, soit elle fait référence à un controle du formulaire qui contient le niveau soit tu rentres le niveau "en dur"
    (version avec référence à un contrôle)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id";  "T_eleve"; "[Niveau]=" & forms!FE_Gestion_eleves!CONTROLEQUICONTIENTLENIVEAU  & " AND [Sexe]=1"); 0)
    ou
    (version avec niveau en "dur")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id";  "T_eleve"; "[Niveau]=1  & " AND [Sexe]=1"); 0)
    il en faudra autant que par niveau et sexe, donc je te conseille la première solution

    A+

  15. #15
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut
    J'ai utilisé la "version avec niveau en "dur"" mais la zone de texte TxtEffectifFilles6 n'affiche pas le nombre de filles dans le niveau, par contre elle affiche le nombre de niveaux: 4(6ème, 5ème, 4ème, 3ème°

  16. #16
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Citation Envoyé par djibysadji Voir le message
    J'ai utilisé la "version avec niveau en "dur"" mais la zone de texte TxtEffectifFilles6 n'affiche pas le nombre de filles dans le niveau, par contre elle affiche le nombre de niveaux: 4(6ème, 5ème, 4ème, 3ème°
    Excuses j'ai fait une erreur, mais logiquement tu aurais dû avoir une erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id";  "T_eleve"; "[Niveau]=1 AND [Sexe]=1"); 0)
    A+

  17. #17
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Points : 97
    Points
    97
    Par défaut
    Moi j'ai corrigé autrement et cela a fonctionné; j'ai fait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(DCount("Eleve_id";  "T_eleve"; "[Niveau]=1" & " AND [Sexe]=1"); 0)
    .

    Vraiment Chapeau et un grand MERCI pour le soutien.

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

Discussions similaires

  1. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  2. Comment créer une fonction qui retourne un tableau?
    Par Dereck07 dans le forum Delphi
    Réponses: 4
    Dernier message: 26/04/2007, 13h16
  3. Réponses: 8
    Dernier message: 24/10/2006, 16h50
  4. [debutant] fonction qui retourne une valeur
    Par arnolpourri dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2006, 09h29
  5. [PL/SQL] Fonction qui retourne plusieurs valeurs
    Par Loko dans le forum Oracle
    Réponses: 2
    Dernier message: 07/12/2004, 09h43

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