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 :

Une recherche très difficile !


Sujet :

WinDev

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut Une recherche très difficile !
    Bonjour, je possède une table avec plusieurs colonnes comme ceci :

    Nom | Lecture | Orthographe | Numeration | Moyenne Gen


    Lecture,Orthographe,Numeration et Moyenne Gen sont bien entendu, des numériques.
    La table se remplit "directement", on entre les données qui s'inscrivent dans l'analyse.
    A la fin de la table, j'ai fait afficher la ligne "moyenne".
    La moyenne générale est calculée automatiquement a chaque modification a l'aide d'une procédure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Moyenne_gen = (Val(Lecture) + Val(Orthographe) + Val(Numeration)) / 3
    L'ennui, c'est que j'ai ajouté quelques colonnes en plus ( conjugaison, vocabulaire, etc ... ).

    Et, je voudrai que si un élève est absent a un controle ( = pas de note ) alors ce ne soit pas pris comme un "0" et la moyenne ne soit pas changé.

    Un exemple :
    Imaginons que je ne sois pas la lors de l'évalutaion d'Orthographe.
    Voila mes notes ( sur 10 ) :
    Lecture : 6
    Orthographe : abs
    Numeration : 8

    Actuellement, la moyenne serait calculée comme ceci :

    Moyenne_gen = (6 + 0 + 8) / 3
    Cela me ferait 4,7 de moyenne génerale.
    Or, étant absent, je n'ai pas eu "0"
    Donc, il me faudrait un code qui prenne en compte ce "abs"
    Moyenne_gen = (6+8) / 2
    = 7


    Donc, pour résumer :

    1) Il faudrait que lorsque je suis dans un champ "numérique" pour pouvoir afficher la moyenne au dessous de ma table, je puisse écrire "abs"

    2) Lorsque dans une note ( ou plusieur ) il y a "abs" il ne faut pas prendre en compte cette note.

    J'espère que vous m'avez compris, @+

  2. #2
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut
    Ton calcul devra se faire par programmation lors de l'affichage de la table...
    (code d'affichage d'une ligne de la table)

    Tu pourra faire les vérifications que tu veux pour faire ton calcul..

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    Mon calcul, je l'ai fait.
    Mais c'est juste qu'il m'est impossible de mettre pleins de "si"
    J'ai 13 notes a donner.
    Si je doit mettre un coe du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Si lecture ="" alors
    moyenne_gen=truc
    FIN
    SI lecture = "" ET orthographe="" alors
    moyenne_gen=truc
    FIN
    Impossible

  4. #4
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut
    Na...

    T'as besoin d'un compteur, et d'un accumulateur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Si lecture<>"" alors
        Ct++
        Tot = NoteLecture
    fin
     
    Si Anglais<>"" alors
        Ct++
        Tot = Tot + NoteAnglais
    fin
     
    ...
     
    ainsi de suite pour chaque matiere
    A la fin, tu divise ton total par ton compteur...

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    Je vois ...
    Mais, a quoi correspond "Ct++"

    Et, comment marquer dans un champ numérique "abs"
    OU, comment faire le total d'une COLONNE d'une table ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    C'est pas bien compliqué
    Tu comptes tes champs (colonnes ou matières comme tu veux) encore que logiquement tu sais combien il y en a.
    Tu comptes les zéros
    tu fais le total et tu divises par NbCol-NbZéro

    Exemple :
    Lecture : 6
    Orthographe : 0
    Numeration : 8
    Machin : 0
    Autre : 8
    Divers : 6

    Total = 28
    Nb de matières : 6
    Nb de zéros : 2
    Moyenne : 28/(6-2) = 7.5

    Simple no ?

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    j'avou que je n'y avais pas penser !
    dans ce cas, on peut compter les "abs" et ça marchera nickel !
    Maintenant, seul problème : faire la moyenne d'une colonne entière de "texte" !

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    La moyenne de texte ??
    Je ne comprends pas ?

    Tu veux dire la moyenne des colonnes ?
    Si oui, c'est pareil.
    Sauf que si tu ne connais pas le nombre de lignes tu dois les compter.

    Ce qui est en rouge ci-dessous ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Nom | Lecture | Orthographe | Numeration | Moyenne Gen
    Luc         8             7            5           6.7
    Marc        6             0            7           6.5
    Jean        8             6            0           7
    *******************************************************
              7.3           6.5            6

  9. #9
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut
    Si ta colonne est texte, tu fais un val().. si ce n'est pas ca, j'aI pas compris ta question...

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    Oui, c'est ce qui est en rouge.
    Car, actuellement, j'ai mes champs de type "numérique" donc, on ne peut rentrer que des nombres.
    Maintenant que ce sont des champs "texte", je peux y entrer des nombres et du texte ( "abs" )

  11. #11
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut
    tu vérifie si ton champ <> "abs"

    si oui : totColonne += val(ton champ)

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    Avec ce code la pour calculer la moyenne, ça ne fonctionne pas :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    sTotal est une chaîne
    sNbAbs est une chaîne
     
    SI "Trimestre.TABLE_Eval_1er.Lecture" <> "abs" ALORS
    	sNbAbs = sNbAbs + 1
    SINON
    	sTotal = sTotal + "Trimestre.TABLE_Eval_1er.Lecture"
    FIN
     
    //Si Orthographe<>"abs" alors
    //sNbAbs = sNbAbs + 1
    //fin
    //Si Orthographe2<>"abs" alors
    //	sNbAbs = sNbAbs + 1
    //fin
    //Si Orthographe3<>"abs" alors
    //	sNbAbs = sNbAbs + 1
    //fin
    SI "Trimestre.TABLE_Eval_1er.Grammaire"<>"abs" ALORS
    	sNbAbs = sNbAbs + 1
    SINON
    	sTotal = sTotal + "Trimestre.TABLE_Eval_1er.Grammaire"
    FIN
    SI "Trimestre.TABLE_Eval_1er.Conjugaison"<>"abs" ALORS
    	sNbAbs = sNbAbs + 1
    SINON
    	sTotal = sTotal + "Trimestre.TABLE_Eval_1er.Conjugaison"
    FIN
    SI "Trimestre.TABLE_Eval_1er.Vocabulaire"<>"abs" ALORS
    	sNbAbs = sNbAbs + 1
    SINON
    	sTotal = sTotal + "Trimestre.TABLE_Eval_1er.Vocabulaire"
    FIN
    les // étant plus compliquées, je m'y pencherai dessus tout a l'heure.

  13. #13
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut
    SI "Trimestre.TABLE_Eval_1er.Vocabulaire"<>"abs" ALORS
    sNbAbs = sNbAbs + 1
    SINON
    sTotal = sTotal + "Trimestre.TABLE_Eval_1er.Vocabulaire"
    FIN
    Les guillemets désignent une chaine de caractère, et non son contenu...
    Ici, tu vérifie si la chaine "Trimestre.TABLE_Eval_1er.Vocabulaire" est différente de "abs"... ce qui sera toujours vrai...

    Si par un délire total ton égalité avait été vrai, alors tu aurais ajouté la chaine
    "Trimestre.TABLE_Eval_1er.Vocabulaire" à ton total, au lieu de ton contenu...

    Trimestre.TABLE_Eval_1er.Vocabulaire étant une chaine... pour en récupérer ta valeur numérique, tu dois faire une Val() [est-ce que je t'en avais déjà parlé ? ]

    Et pour ette encore plus certain de ne pas te fair jouer de tour, enleve les espace qui auraient pus se glisser dans ton champ...

    tu devrais plutot avoir

    Et pourquoi essaies-tu de faire des calculs sur des chaines ? Tes 2 variables ne devraient pas être numérique ?

    sTotal est un entier
    sNbAbs est un entier

    SI sansespace(Trimestre.TABLE_Eval_1er.Vocabulaire) <> "abs" ALORS
    sNbAbs = sNbAbs + 1
    SINON
    sTotal = sTotal + val(Trimestre.TABLE_Eval_1er.Vocabulaire)
    FIN
    Fin du tuto sur les chaines de caractères !

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    ça marche nickel !
    Il ne me reste plus que les colonnes, mais je pense que je vais y arriver seul ( au pire, je vous demande ! )

    Sinon, comment remplir par programmation les cases de la ligne "moyenne" que l'on peut créer via l'éditeur ? ( rubrique Détail : calculs automatiques )

  15. #15
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    Ah, il y a peut etre un petit quelque chose :
    Dans mon état, j'ai plusieurs colonnes : "note la + haute", "note la + basse", "moyenne de la classe"

    J'ai donc 3 requetes qui me cherche pour chaque "lecture, grammaire, etc ..." la note la + haute, la + basse et la moyenne.

    L'ennui, c'est que maintenant que je peux entrer "abs", la note la plus haute est "abs" et non 10
    Comment y remédier ?
    merci, @+

  16. #16
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut
    Sinon, comment remplir par programmation les cases de la ligne "moyenne" que l'on peut créer via l'éditeur ? ( rubrique Détail : calculs automatiques )
    Ce champ doit avoir un nom ? utilises ce nom pour faire ta prog, comme tu le fais pour une ligne

    L'ennui, c'est que maintenant que je peux entrer "abs", la note la plus haute est "abs" et non 10
    Fais le par prog...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    noteHaute est un entier
     
    noteHaute = 0
    Boucle de lecture
        Si note <>"abs" alors
            Si val(note) > noteHaute alors
                Notehaute = val(note)
            fin
        Fin
    FIN
     
    pour tous tes traitements
    Tous tes futurs états et tables devront être faits par prog car tu as tes notes dans un champ texte et tu as toujours un traitement spécifque a faire

    Tu sais et te rappelle bien que dans un champ texte, l'ordre numérique n'est pas tenu en compte hein ?

    1
    10
    2
    3
    4
    5
    ...

    Salut bien !

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

  17. #17
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    mes champs sont reliés par la requete par programmation du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    RUB_Lecture_note_plus_haute = Req_note_plus_haute.Lecture
    RUB_Grammaire_note_plus_haute = Req_note_plus_haute.Grammaire
    RUB_Lecture_note_plus_basse = Req_note_plus_basse.Lecture
    ...

  18. #18
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut
    Soit tu enleves tes liaisons, soit tu modifie ta requete pour ne pas tenir compte des "abs"... et tu t'arranges pour que ta valeur de requete soit numérique !

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

  19. #19
    Débutant
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Points : 76
    Points
    76
    Par défaut
    Dans mon etat, il y a des "+" qui s'affichent, des données pas bonnes ...
    Voila le projet: ( c'est indescriptible )
    ( je sais, c'est pas bien rangé, pa optimisé dutout, etc ... )
    ICI !!!

    Merci d'y jeter un coup d'oeil !
    @+

  20. #20
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut
    ton .zip contenait plus de 1,000 erreurs...
    je n'ai pu ouvrir le projet

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

Discussions similaires

  1. Recherche de mots dans une séquence très longue
    Par Jasmine80 dans le forum Langage
    Réponses: 0
    Dernier message: 21/12/2007, 10h52
  2. Optimisation d'une recherche et mise à jour
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/01/2005, 18h38
  3. Réponses: 8
    Dernier message: 10/09/2004, 17h30
  4. [VB.NET] Quel objet tableau pour une recherche indexée ???
    Par Kitano dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/09/2004, 09h38
  5. Enlever la surbrillance lors d'une recherche avec vi
    Par sekiryou dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 04/03/2004, 13h55

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