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 :

calcul moyenne avec gestion du null


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut calcul moyenne avec gestion du null
    Bonjours à tous
    comme l'indique le titre je veux calculer la moyenne pour chaque ligne d'enregistrement.
    -j'ai deux fichier (c1) et (notes) avec (NULL supporté) reliée
    -l'enregistrement des notes se fait en table mémoire alimenter avec requête par le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierVersTableMémoire(MoiMême,REQ_notes)
    -l'ajout des notes avec le code suivant:
    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
    34
    35
    36
    37
    38
    39
    40
     
    i est un entier
     
    // Mise à jour 
    POUR i=1 _A_ TableOccurrence(TABLE_arabe)
    	TableSelectPlus(TABLE_arabe,i)
     
    	// Recherche l'enregistrement
    	HLitRecherchePremier ( notes, Ninsc, TABLE_arabe.COL_ninsc)
     
    	SI HTrouve () ALORS
    		notes.Ninsc =TABLE_arabe.COL_ninsc[i]     	
    		notes.CHARB=TABLE_arabe.COL_SansNom1[i]     	
    		notes.STARB=TABLE_arabe.COL_SansNom2[i]     	
    		notes.TARB=TABLE_arabe.COL_SansNom3[i]   
    		notes.DARB=TABLE_arabe.COL_SansNom4[i]
    		notes.Earb=TABLE_arabe.COL_SansNom5[i]
    		notes.Alarb=TABLE_arabe.COL_SansNom6[i]
    		notes.larb=TABLE_arabe.COL_SansNom7[i]
    		notes.tkt=TABLE_arabe.COL_SansNom8[i]
    		notes.tch=TABLE_arabe.COL_SansNom9[i]
    		HModifie (notes)
     
    	SINON
    		notes.Ninsc =TABLE_arabe.COL_ninsc[i]     	
    		notes.CHARB=TABLE_arabe.COL_SansNom1[i]     	
    		notes.STARB=TABLE_arabe.COL_SansNom2[i]     	
    		notes.TARB=TABLE_arabe.COL_SansNom3[i]   
    		notes.DARB=TABLE_arabe.COL_SansNom4[i]
    		notes.Earb=TABLE_arabe.COL_SansNom5[i]
    		notes.Alarb=TABLE_arabe.COL_SansNom6[i]
    		notes.larb=TABLE_arabe.COL_SansNom7[i]
    		notes.tkt=TABLE_arabe.COL_SansNom8[i]
    		notes.tch=TABLE_arabe.COL_SansNom9[i]
    		HAjoute(notes)
    	FIN
    FIN
    TableAffiche(TABLE_arabe,taCourantEnreg)
     
    TableAffiche(TABLE_Notes,taCourantEnreg)
    1-est_il possible de calculer de la moyenne sur ma tablemémoire avec gestion du null?
    2-si non comment le faire par programmation sur etat.

  2. #2
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    1-est_il possible de calculer de la moyenne sur ma tablemémoire avec gestion du null?
    Plusieurs manières de faire :

    1 - Tu modifies ta requête pour qu'elle ait une colonne de plus avec le calcul de la moyenne suivi d'un FichierVersTableMémoire()

    2 - Après le FichierVersTableMémoire() tu ajoutes une colonne à la table pour accueillir le calcul de la moyenne (par clone). Puis tu fais une boucle de parcours du résultat de ta requête et ligne par ligne tu comptes le nombre de note qui ne sont pas à null et tu somme les notes. Enfin tu calcules la moyenne de la ligne et l'enregistres dans la table

  3. #3
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    Bonjour Mr laurent30s
    j'ai essayé de calculer la moyenne en utilisant cette méthode :

    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
     
     
    ResNbColonne est un entier=TableOccurrence(TABLE_arabe,toAffichée) -3
    POUR TOUTE LIGNE DE TABLE_arabe
     
    	fes1 est un numérique=COL_SansNom1
    fes2 est un numérique=COL_SansNom2
    fes3 est un numérique=COL_SansNom3
    fes4 est un numérique=COL_SansNom4
    fes5 est un numérique=COL_SansNom5
    fes6 est un numérique=COL_SansNom6
    fes7 est un numérique=COL_SansNom7
    fes8 est un numérique=COL_SansNom8
    fes9 est un numérique=COL_SansNom9
    COL_SansNom10(fes1+fes2+fes3+fes4+fes5+fes6+fes7+fes8+fes9)/ResNbCone
     
    FIN
    le problème qu'il compte les colonnes vide aussi même en utilisant (toAffichée)
    sur l'aide (toAffichée)= Nombre de lignes non vides dans la partie visible de la table.

  4. #4
    Membre très actif

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Par défaut
    Bonjour,
    pourrais tu nous donner une image de tes fichiers d'analyse
    car il semble que tu perdes beaucoup en efficacité avec tes boucles.
    et cela nous permettrai de mieux comprendre ton problème

    BD

  5. #5
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    Merci
    voilà une image
    Images attachées Images attachées  

  6. #6
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    le problème qu'il compte les colonnes vide aussi même en utilisant (toAffichée)
    sur l'aide (toAffichée)= Nombre de lignes non vides dans la partie visible de la table.
    Normal dans la table les colonnes numériques auxquelles tu affectes une rubriques à null, ne se trouve pas à null mais à 0. Donc toutes les colonnes ont une valeur...

    Il y aurait une possibilité en déclarant les colonnes devant accueillir les notes comme des chaînes. Ainsi quand la valeur est à null, la chaine est vide "" sinon il y a la valeur y compris 0. Et dans ce cas on peut faire la différence...
    Ceci dit, je te déconseille cette méthode, tu vas t'embêter pour rien

    Donne nous ta requête ça sera le plus simple...

Discussions similaires

  1. Requete SQL avec gestion de NULL
    Par mail.spam dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/08/2012, 17h29
  2. Calcul moyenne avec coefficient
    Par dharth dans le forum Débuter
    Réponses: 14
    Dernier message: 17/07/2009, 19h10
  3. calcul moyenne avec champs vides
    Par omarpascal dans le forum VBA Access
    Réponses: 8
    Dernier message: 28/11/2007, 08h35
  4. Calculer Moyenne avec un vecteur
    Par theserialkiller10 dans le forum C++
    Réponses: 5
    Dernier message: 20/11/2007, 21h23
  5. calculer une moyenne avec une requete externe
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 16h02

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