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

Requêtes et SQL. Discussion :

Réaliser un Classement Scolaire (rang) avec Access [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre éclairé

    Homme Profil pro
    Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Inscrit en
    Avril 2014
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 285
    Billets dans le blog
    1
    Par défaut Réaliser un Classement Scolaire (rang) avec Access
    Bonjour chère membres de ce Forum.

    Je viens par la présente note vous demandez de l’aide.

    J’ai cherché sur ce forum et impeut partout sur le net et je n’ai pas trouvé de solution.

    En effet j’ai décidé de créer sous access une application de gestion de moyenne.
    Il s’agit de calculer la moyenne trimestrielle et la moyenne générale annuelle d’un élève, puis la moyenne générale annuelle d'un élève par matière.
    J’ai réussi à faire tous ces calculs. Cependant le problème c’est au niveau des rangs.

    Du genre
    1er Sankara Adama 15
    2ème Jack Bauer 14.23
    3ème Smith Angelina 14.20


    Et s’il y a ex éco alors qui met
    Le rang puis ''ex''
    Exemple

    Claude Jackson et Percy Cross ont tous eu 13.25
    Donc je veux un truc du genre

    4èmeEx Claude Jackson 13.25
    4èmeEx Percy Cross 13.25


    Dans la base de données ci-joint il y a une requête qui calcule la moyenne générale trimestrielle(rMoyGenTrimestrielle) donc je souhaiterais que le classement soit fait sur cette requêtes ou si c’est pas possible dite moi ou cela doit être fait. Je rappelle que j’aurais un formulaire puis un Etat à partir de cette requête.

    Voici la bd: EasyNotedeveloppez.rar
    Merci d’avoir pris la peine de lire le sujet jusqu’ici et Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    Adama13 ,

    En fouillant un peu tu trouveras certains exemples à réadapter :

    http://access.developpez.com/sql/

    Jm

  3. #3
    Membre éclairé

    Homme Profil pro
    Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Inscrit en
    Avril 2014
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 285
    Billets dans le blog
    1
    Par défaut
    Bonsoir Jim Merci pour ton aide.
    Je vais suivre cette piste et je te rend compte.

  4. #4
    Membre éclairé

    Homme Profil pro
    Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Inscrit en
    Avril 2014
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 285
    Billets dans le blog
    1
    Par défaut Du genre 1er, 2ème, 2ème
    Bonsoir,
    j'ai reussit a mettre le rang en utilisant une sous requête basé sur la requête contenant le champ qui calcule la moyenne.
    Donc même avec les Ex equo sa marche.
    Un dernier truc: Puisque sa affiche le rang de façon numérique du genre 1 2 3 4 4 5....etc n'aurait-il pas un quelconque moyen ajouter du texte aussi de cette façon 1er 2ème 3ème 4ème 4ex 5ème.

  5. #5
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    Adama bonjour,

    Parfait tu as donc réussi à partir de mon lien à élaborer quelque chose en utilisant les fonctions de domaine. Afin de traduire sous forme de texte le rang nous allons donc réutiliser cette même fonction en rajoutant une fonction vraifaux et en transformant en chaîne texte le résultat retourné.

    Le rang 1 s'écrit 1er les autres ème.

    Partant d'une table ainsi constituée, et fidèle au résultat de ta première requête nous aurions donc : id_Eleve, nom, prenom, moyenne et un rang calculé de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rang: CpteDom("*";"[T_Eleves]";"[Moyenne] > " & [Moyenne])+1
    Le rang étant calculé sur le comptage du nombre d'élèves ayant une moyenne supérieure à celui de l'élève impacté et sur lequel nous rajoutons une unité (si 0 élève avec une moyenne supérieure le rang est donc 0 + 1)

    Partant de ce principe nous allons vérifier la valeur de ce rang en castant la valeur numérique du rang (val) en type texte (trim). Si cette valeur est 1 nous rajouterons er, sinon ème. Ce test sera donc effectué par la fonction iif : https://support.microsoft.com/fr-fr/kb/17450

    L'ajout d'un champ calculé dans notre requête nous donnerait donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RangTexte: VraiFaux(Val(CpteDom("*";"[T_Eleves]";"[Moyenne] > " & [Moyenne])+1)=1;SupprEspace(Val(CpteDom("*";"[T_Eleves]";"[Moyenne] > " & [Moyenne])+1))+"er";SupprEspace(Val(CpteDom("*";"[T_Eleves]";"[Moyenne] > " & [Moyenne])+1))+"ème")
    Le résultat nous afficherait donc et basé sur cette requête complète : (attention la traduction du sql anglicise le nom des fonctions)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT T_Eleves.idEleve,
           T_Eleves.Nom,
           T_Eleves.Prenom,
           T_Eleves.Moyenne,
           DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1 AS Rang,
           IIf(Val(DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1)=1,Trim(Val(DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1))+"er",Trim(Val(DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1))+"ème") AS RangTexte
    FROM T_Eleves
    ORDER BY DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1;

    Nom : Capture.JPG
Affichages : 10011
Taille : 40,3 Ko

    Il te reste fort de cette explication à rajouter le ex-aequo lorsque le compte de la moyenne pour chaque élève est supérieur à 1 (je t'ai donné une partie de la réponse) dans la formulation du dernier step de la construction de ta requête.

    Courage donc pour la suite

    Cordialement

    JimboLion

  6. #6
    Membre éclairé

    Homme Profil pro
    Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Inscrit en
    Avril 2014
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 285
    Billets dans le blog
    1
    Par défaut
    J'apprécie cette façon de m'aider.

    C'est a dire tu ne fais pas tout le boulot a ma place. Tu me met sur une piste et tu me laisse me débrouiller

    C'est trop cool.

    Comme cela je peux bien comprendre la leçon

    Encore une fois merci pour cela.

    Je vais m'y mettre et te donner une suite très vite.

  7. #7
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    jimbolion, peut-on simplifier la requête (éviter la répétition de dcount) par...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT rq.idEleve,
           rq.Nom,
           rq.Prenom,
           rq.Moyenne,
           rq.Rang,
           IIf(Val(rq)=1,Trim(Val(rq))+"er",Trim(Val(rq)+"ème") AS RangTexte,
    IIF(exaequo>1,"Ex","") as txtaequo
    FROM
    (SELECT T_Eleves.idEleve,
           T_Eleves.Nom,
           T_Eleves.Prenom,
           T_Eleves.Moyenne,
           DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1 AS Rang,
    DCount("*","[T_Eleves]","[Moyenne] = " & [Moyenne])+1 AS exaequo
    FROM T_Eleves) as rq
    ORDER BY Rang;
    Je profite pour proposer le traitement de ex aequo.
    @+

  8. #8
    Membre éclairé

    Homme Profil pro
    Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Inscrit en
    Avril 2014
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 285
    Billets dans le blog
    1
    Par défaut
    Bonjour Jim

    J’avance Bien dans ma quête du savoir.

    En suivant ton exemple j’ai pu réadapter cela à mon cas mais j’ai apporté une légère modification Notamment la fonction CpteDom(dcount).

    J’ai constaté que le résultat n’était pas correcte c’est-à-dire, certains enregistrement était ‘’brûler’’ comme on le voit sur ces images.
    Pièce jointe 191938

    Quant il y a des Ex Aequo il saute de rang.
    Donc j’ai résolu cela par l’utilisation de cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT T_Eleves.idEleve, T_Eleves.Nom, T_Eleves.Prenom, T_Eleves.Moyenne, (SELECT COUNT(*) + 1
      FROM (SELECT DISTINCT [Moyenne] FROM [T_Eleves] AS T2)
      WHERE T2.[Moyenne] > [T_Eleves].[Moyenne]
    ) AS Rang, IIf(Val((SELECT COUNT(*) + 1
      FROM (SELECT DISTINCT [Moyenne] FROM [T_Eleves] AS T2)
      WHERE T2.[Moyenne] > [T_Eleves].[Moyenne]
    ))=1,Trim(Val((SELECT COUNT(*) + 1
      FROM (SELECT DISTINCT [Moyenne] FROM [T_Eleves] AS T2)
      WHERE T2.[Moyenne] > [T_Eleves].[Moyenne]
    )))+"er",Trim(Val((SELECT COUNT(*) + 1
      FROM (SELECT DISTINCT [Moyenne] FROM [T_Eleves] AS T2)
      WHERE T2.[Moyenne] > [T_Eleves].[Moyenne]
    )))+"ème") AS RangTexte
    FROM T_Eleves
    ORDER BY T_Eleves.Moyenne DESC;

    Et voici le résultat :
    Pièce jointe 191939

    Donc il ne me reste plus que les Ex Aequo.

    Merci à vous Diakité de prendre part à cette discussion
    Je vais remplacer dcount par Select Distinct dans votre sql et voir ce que sa donne

    Merci D'avance Jim et Diakite

  9. #9
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    alassanediakite,

    excellente solution que tu proposes en utilisant les requêtes imbriquées (je n'ai pas testé mais te fait confiance sur la sortie attendue)

    adama regarde ce que propose alassanediakite

    jm

  10. #10
    Membre éclairé

    Homme Profil pro
    Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Inscrit en
    Avril 2014
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 285
    Billets dans le blog
    1
    Par défaut Fin et remerciement
    Bonjour ,

    Dans notre jargon ici en Côte d’Ivoire on dit TOUT T’EST PROPRE
    Cela veut dire que problème résolu.

    @Alassane
    J’ai apporter quelques modification à ton Code SQL notamment

    Dcount que j’ai remplacer par select distinct pour le champ Rang

    Puis ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*","[T_Eleves]","[Moyenne] = " & [Moyenne])+1
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CpteDom("*";"[T_Eleves]";"[Moyenne]*100 = " & [Moyenne]*100)
    ---- *100 car lorsque c’était un nombre a virgule alors il mettait ERREUR
    ----sans le +1 pour le champ exaequo Car tous les enregistrement même ceux qui n’était pas exaequo avait des Ex et ce champ(exaequo) renvoyais 2 comme compte de moyenne. Ce qui n'était pas normal
    Et pour finir J’ai coller le champ RangTexte au champ txteaquo pour donner ce ci 1er EX, 2eme Ex …..etc.


    Voici une photo
    Nom : 2015-11-07_072659.png
Affichages : 6762
Taille : 7,8 Ko


    Voici le code sql qui a permis de réaliser cela. Je remercie au passage Claude Leloup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rang: [RangTexte] & " " & [txtaequo]
    Bon voila ainsi s’achève cette discussion

    Je tenais à dire du fond du cœur à dire Merci à toi Jimbolion merci d’être toujours là pour moi
    Quant à cette manière de m’aider alors je t’exhorte à continuer(ne me rend pas la tâche aisé)

    Merci également à toi Alassane d’être toujours la au bon moment pour apporter ton l’aide

    Jim, Alassane ce que vous faite, le courage dont vous faites preuve, la gentillesse et la sagesse qui vous anime l’énergie que vous dépenser pour aider des gens en difficultés tout cela ce n’est pas du gaspillage. Même si à ceux que vous apportez de l’aide ne sont pas reconnaissant, sachez alors que Celui la haut qui voit tout vous récompensera pour vos bonnes œuvres.

    Que Dieu la haut garde un œil sur vous, vous assiste, vous bénisse et bénit aussi ce forum car des gens comme vous il y en a plein sur ce forum
    à vous deux.

  11. #11
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    Adama,

    Heureux d'avoir pu te rendre service.

    Bonne continuation à toi dans tes différentes aventures..
    Pense à mettre

    Jimbolion

  12. #12
    Membre éclairé

    Homme Profil pro
    Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Inscrit en
    Avril 2014
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 285
    Billets dans le blog
    1
    Par défaut
    C'est Moi qui te Remercie

  13. #13
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut Calcul du rang
    Bonjour a tous

    je pense que cette discussion n'est pas résolue.

    le problème de comptage demeure avec les ex;

    Si on a un exæquo, le chiffre suivant doit sauter.

    1 er
    2 ème
    2 emeEx
    on aura plus de 3ème, mais un
    4 ème.

  14. #14
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    akaramoko

    oui mon exemple dans le #5 gère ce cas :

    http://www.developpez.net/forums/d15...s/#post8429744

    cldt

    jmb

  15. #15
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut Réaliser un Classement Scolaire (rang) avec Access
    Bonjour Jimbolion

    Effectivement ton exemple le gère.
    Cependant quand l'élève est NON CLASSE du fait d'une dispense ou repos maladie, le champ reste NULL ( car pas de moyenne) et la formule renvoie une erreur.

    Cordialement

  16. #16
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    akaramoko,

    Citation Envoyé par akaramoko Voir le message
    Bonjour Jimbolion

    Effectivement ton exemple le gère.
    Cependant quand l'élève est NON CLASSE du fait d'une dispense ou repos maladie, le champ reste NULL ( car pas de moyenne) et la formule renvoie une erreur.

    Cordialement
    Dans ce cas il faudra appliquer un filtre

    Cldt

  17. #17
    Membre averti

    Homme Profil pro
    enseignat
    Inscrit en
    Août 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : enseignat
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2013
    Messages : 20
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par adama13 Voir le message
    Bonsoir,
    j'ai reussit a mettre le rang en utilisant une sous requête basé sur la requête contenant le champ qui calcule la moyenne.
    Donc même avec les Ex equo sa marche.
    Un dernier truc: Puisque sa affiche le rang de façon numérique du genre 1 2 3 4 4 5....etc n'aurait-il pas un quelconque moyen ajouter du texte aussi de cette façon 1er 2ème 3ème 4ème 4ex 5ème.



    Bonjour adama.
    J'ai le meme probleme que toi pour les rangs peux-tu me donner un cout de main. Vu que tu as resolu ton probleme.
    Merci
    Cordialement.
    Mensanh

  18. #18
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Citation Envoyé par jimbolion Voir le message
    Adama bonjour,

    Parfait tu as donc réussi à partir de mon lien à élaborer quelque chose en utilisant les fonctions de domaine. Afin de traduire sous forme de texte le rang nous allons donc réutiliser cette même fonction en rajoutant une fonction vraifaux et en transformant en chaîne texte le résultat retourné.

    Le rang 1 s'écrit 1er les autres ème.

    Partant d'une table ainsi constituée, et fidèle au résultat de ta première requête nous aurions donc : id_Eleve, nom, prenom, moyenne et un rang calculé de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rang: CpteDom("*";"[T_Eleves]";"[Moyenne] > " & [Moyenne])+1
    Le rang étant calculé sur le comptage du nombre d'élèves ayant une moyenne supérieure à celui de l'élève impacté et sur lequel nous rajoutons une unité (si 0 élève avec une moyenne supérieure le rang est donc 0 + 1)

    Partant de ce principe nous allons vérifier la valeur de ce rang en castant la valeur numérique du rang (val) en type texte (trim). Si cette valeur est 1 nous rajouterons er, sinon ème. Ce test sera donc effectué par la fonction iif : https://support.microsoft.com/fr-fr/kb/17450

    L'ajout d'un champ calculé dans notre requête nous donnerait donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RangTexte: VraiFaux(Val(CpteDom("*";"[T_Eleves]";"[Moyenne] > " & [Moyenne])+1)=1;SupprEspace(Val(CpteDom("*";"[T_Eleves]";"[Moyenne] > " & [Moyenne])+1))+"er";SupprEspace(Val(CpteDom("*";"[T_Eleves]";"[Moyenne] > " & [Moyenne])+1))+"ème")
    Le résultat nous afficherait donc et basé sur cette requête complète : (attention la traduction du sql anglicise le nom des fonctions)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT T_Eleves.idEleve,
           T_Eleves.Nom,
           T_Eleves.Prenom,
           T_Eleves.Moyenne,
           DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1 AS Rang,
           IIf(Val(DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1)=1,Trim(Val(DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1))+"er",Trim(Val(DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1))+"ème") AS RangTexte
    FROM T_Eleves
    ORDER BY DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1;

    Nom : Capture.JPG
Affichages : 10011
Taille : 40,3 Ko

    Il te reste fort de cette explication à rajouter le ex-aequo lorsque le compte de la moyenne pour chaque élève est supérieur à 1 (je t'ai donné une partie de la réponse) dans la formulation du dernier step de la construction de ta requête.

    Courage donc pour la suite

    Cordialement

    JimboLion
    Bonsoir membres du forum,
    J'ai essayé d'adapter votre code SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT INFOS_COMPOSITION_ARABE.idCompoA, INFOS_COMPOSITION_ARABE.anscol, INFOS_COMPOSITION_ARABE.mle_Eleve, INFOS_COMPOSITION_ARABE.ClasseArabe, INFOS_COMPOSITION_ARABE.CompoArabe, INFOS_COMPOSITION_ARABE.MoyenneCompo, INFOS_COMPOSITION_ARABE.ID_Etab, DCount("*","[INFOS_COMPOSITION_ARABE]","[MoyenneCompo] > " & [MoyenneCompo])+1 AS Rang, IIf(Val(DCount("*","[INFOS_COMPOSITION_ARABE]","[MoyenneCompo] > " & [MoyenneCompo])+1)=1,Trim(Val(DCount("*","[INFOS_COMPOSITION_ARABE]","[MoyenneCompo] > " & [MoyenneCompo])+1))+"er",Trim(Val(DCount("*","[INFOS_COMPOSITION_ARABE]","[MoyenneCompo] > " & [MoyenneCompo])+1))+"ème") AS RangTexte, DCount("*","[INFOS_COMPOSITION_ARABE]","[MoyenneCompo] > " & [MoyenneCompo])+1 AS Expr1
    FROM INFOS_COMPOSITION_ARABE
    ORDER BY DCount("*","[INFOS_COMPOSITION_ARABE]","[MoyenneCompo] > " & [MoyenneCompo])+1;
    à mon cas mais j'ai les messages d'erreurs suivantes:

    Nom : ModuleSql_Rang_Ar_1.JPG
Affichages : 4222
Taille : 64,3 Ko
    Nom : ModuleSql_Rang_Ar_2.JPG
Affichages : 4225
Taille : 63,3 Ko

    Latable source "INFOS_COMPOSITION_ARABE"
    Nom : ModuleSql_Rang_Ar_3.JPG
Affichages : 4310
Taille : 51,5 Ko

    Je vous signale que ce post est en rapport avec cette discussion https://www.developpez.net/forums/d2...sition-classe/

    Cordialement.

  19. #19
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Citation Envoyé par alassanediakite Voir le message
    Salut
    jimbolion, peut-on simplifier la requête (éviter la répétition de dcount) par...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT rq.idEleve,
           rq.Nom,
           rq.Prenom,
           rq.Moyenne,
           rq.Rang,
           IIf(Val(rq)=1,Trim(Val(rq))+"er",Trim(Val(rq)+"ème") AS RangTexte,
    IIF(exaequo>1,"Ex","") as txtaequo
    FROM
    (SELECT T_Eleves.idEleve,
           T_Eleves.Nom,
           T_Eleves.Prenom,
           T_Eleves.Moyenne,
           DCount("*","[T_Eleves]","[Moyenne] > " & [Moyenne])+1 AS Rang,
    DCount("*","[T_Eleves]","[Moyenne] = " & [Moyenne])+1 AS exaequo
    FROM T_Eleves) as rq
    ORDER BY Rang;
    Je profite pour proposer le traitement de ex aequo.
    @+
    Bonsoir membres du forum,
    Le code ci dessus affiche un message d'erreur:

    Nom : ModuleSql_Rang_Ar_4_Erreur.JPG
Affichages : 4234
Taille : 93,0 Ko

    Cordialement.

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

Discussions similaires

  1. [Classement] Affichage du rang avec pagination
    Par Spire_ dans le forum Langage
    Réponses: 3
    Dernier message: 19/12/2013, 09h14
  2. Réponses: 1
    Dernier message: 22/07/2009, 17h50
  3. Réponses: 2
    Dernier message: 04/07/2006, 10h26

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