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

WinDev Discussion :

Ajouter un rang sur un tableau


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Ajouter un rang sur un tableau
    Salut à tous , je suis débutant en windev et je vient de terminer l'autoformation .Maintenant j’essaie de faire une projet avec ce dernier , en fait mon projet c'est de faire une gestion de note avec le rang , mon souci c'est comment ajouter un rang à la colonne rang en fonction de la moyenne ? comme illustré par la figure ci-après .
    Nom : GIGI.PNG
Affichages : 888
Taille : 23,9 Ko

    Merci d'avance pour tous ceux qui vont me répondre.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En faisant un trie, ça aide

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci romulus001 pour ta suggestion , mais mon problème n'est pas encore résolu , en fait ce tableau là est ajouté par le boucle POUR TOUT comme montré ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    POUR TOUT note  AVEC "DEsign_classe='"+COMBO_note_CLASSE1..ValeurAffichée+"' et  semestre='"+COMBO_semestre_note_1..ValeurAffichée+"' et desig_mat  ='"+COMBO_matière1..ValeurAffichée+"'"   
    	TableAjoute(TABLE_afficher_note,note.Num_matr+TAB+note.DEsign_classe+TAB+note.desig_mat+TAB+...
    	note.notee+TAB+note.noteEXamen1+TAB+note.noteEXam2+TAB+note.Retard+TAB+...
    	note.moyenne_+TAB+note.coeff+TAB+note.note+TAB+note.observation+TAB+note.Semestre)	                                                                                                                                         	
    FIN

  4. #4
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1 040
    Points : 2 488
    Points
    2 488
    Par défaut
    Romulus t'a donné un indice.
    Mais il faut que de ton côté, tu fasses un minimum d'effort de réflexion.
    Que ce passe-t-il lorsque ta table est triée ?

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 122
    Points : 9 547
    Points
    9 547
    Par défaut
    Tu fais une boucle POUR TOUT...

    Au moment où tu fais cette boucle, tu ne peux pas calculer les rangs.
    Quand tu insères la ligne n°1, tu ne sais pas si cet élève aura le rang 1 ou 10 ou 100. Tu dois donc finir ta boucle qui insère toutes les lignes, puis faire un autre traitement qui va calculer les rangs.
    Comme suggérer par Romulus, faire un TableTrie() est une très bonne base. C'est ce qui sera le plus efficace pour cet objectif.

    Tu peux aussi le faire sans TableTrie(), en comparant chaque ligne avec toutes les autres ; c'est peut être plus 'intuitif' comme solution, plus proche de ce qu'on ferait si on devait calculer les rang à la main.
    Mais de toutes façons, tu ne peux le faire qu'après ta boucle POUR TOUT ...

  6. #6
    Invité
    Invité(e)
    Par défaut
    donc tu veux dire que la table est remplie par programmation, dans ce cas, il suffit de calculer manuellement le numéro de rang, et puis, affaire classée.

    PS1 : en présence de code sur des messages, il faut appel à la balise [CODE]
    PS2 : je ne fais jamais appel à la fonction TableAjoute pour alimenter les tables mais TableAjouteLigne, qui elle est plus simple à maniée que TableAjoute

  7. #7
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    Le plus simple ne serait-il pas de modifier le POUR TOUT par une requête SQL qui intègre un ORDER BY Note.note DESC ?

    Et donc on récupèrerait les enregistrements déjà triés. Il n'y aurait plus qu'à gérer un compteur pour incrémenter le rang.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci à tous pour vos conseils , ma souci est résolu, grâce à la fonction tabletrie() les moyennes sont donc triés par ordre décroissant et pour ajouter le rang en même temps, j'ai utilisé le code ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
         i,j,m sont entiers
         m=TableOccurrence(TABLE_afficher_note)
           POUR i=1 A  m
    	  k est un entier=1
    	     POUR j=1 A  m
    		SI TABLE_afficher_note.COL_Moyenne[j]>TABLE_afficher_note.COL_Moyenne[i] ALORS
    			k++	
    	        FIN
                  FIN
                    TABLE_afficher_note.COL_Rang[i]=k	
            FIN
    voici le résultat:
    Nom : PO.PNG
Affichages : 754
Taille : 17,3 Ko

    Par contre,Le nouveau problème c'est quand j'ai deux moyennes pareils , il va donc falloir écrire "Ex" précisément "Execo" juste après les rangs.
    Comment en procéder ?
    Merci a tous pour vos réponses.

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 122
    Points : 9 547
    Points
    9 547
    Par défaut
    Dans le code que tu montres, il n'y a pas de TableTrie(). Si tu as utilisé tableTrie(), tu peux largement simplifier ton code (pas beaucoup moins de lignes de code, mais beaucoup plus rapide à l'arrivée)

    Pour les ex-aequo, quelques remarques :
    - Apparement, tu as dit que ta colonne Rang était de type numérique. C'est bien. Dans une colonne numérique, tu ne pourras afficher que des nombres, pas le mot ex-aequo.
    - Tu as su calculer les rang, à peu près. Tu es très près du but pour déterminer les ex-aequo. Tu as posté la question il y a 10minutes, normalement tu as trouvé la réponse.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Réveilles la force qui est en toi et tu vas y arriver

Discussions similaires

  1. [XL-2010] Erreur "Cannot expand named range" sur Tableau nommé - Serveur CITRIX
    Par Arkio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/08/2014, 10h26
  2. [XL-2010] Ajouter des imoticone sur un tableau
    Par nassiri dans le forum Excel
    Réponses: 2
    Dernier message: 01/11/2013, 16h12
  3. [2008R2] Ajout d'un scrollbar sur un tableau
    Par pticouta dans le forum SSRS
    Réponses: 1
    Dernier message: 25/04/2012, 11h31
  4. Réponses: 4
    Dernier message: 06/04/2010, 13h34
  5. Réponses: 4
    Dernier message: 30/05/2007, 14h35

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