begin process at 2010 02 10 10:58:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Base de données

 > 

Access

 > 

Calcul de la moyenne


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Calcul de la moyenne

jeudi 9 novembre 2006 à 19:37:56 | Calcul de la moyenne

mtaallah

Salut à tous;
  Je cherche à calculer la moyenne de quatre valeurs dans un DBGrid (connecté à une base de données access via un ADOQuery)...
   Pour expliquer mieux, je dispose les champs suivants
            - Ref
            - Valeur1
            - Valeur2
            - Valeur3
            - Valeur4
            - MoyVal

   Est-ce qu'il existe une commande ou une requête sql qui affecte directement à Moy la moyenne des quatres notes "valeur" en tenant compte bien sur des conditions:
              - Le champs vide ne sera pas tenu comme note
              - Le zéro est une mauviase note à compter

en fait: j'ai essayé avec la manière suivante et ça marche (à conditions):

Procedure TForm1.BitBtn1Click(Sender: TObject);
var
    i,j: Integer;
    TP: real;
begin
     i:=4;
//     TP:=0;
   ADOQuery1.First;
   while not ADOQuery1.Eof do
      Begin
          
TP:=0;
           for j:=1 to 4 do
               Begin
                   If ADOQuery1.FieldByName('Valeur'+j).isnull then i:=i-1
                   else TP:= TP +
ADOQuery1.FieldByName('Valeur1').asfloat;
                end;
           
ADOQuery1.FieldByName('MoyVal').asfloat:= FloatForm('0.000', TP / i);
end;
mais ça a l'air lourd et lent lors de son exécution... je cherche quelque chose de professionnel 
j'ai cherché avec les requeêtes SQL comme AVG et Moyenne mais j'ai trouvé qu'ils donnent le résultat pour la moyenne des champs (c-a-d la moyenne du champs valeur1 pour tous les produits par exemple et non pas la moyenn des valeurs disponibles pour un certain produit)..

Merci
jeudi 9 novembre 2006 à 21:38:50 | Recapitulatif

mtaallah

une petite faute de frappe
                   else TP:= TP + ADOQuery1.FieldByName('Valeur'+j).asfloat;
Merci
vendredi 10 novembre 2006 à 01:22:19 | Re : Calcul de la moyenne

mtaallah

Encore une fois...
 Voici la procédure qui fonctionne à 100% en donnant les moyenns
  mais, je suis toujours à la recherche d'autres solutions possibles
  si possible bien sûr

Procedure TForm1.BitBtn1Click(Sender: TObject);
var
    i,j: Integer;
    TP: real;
begin
   ADOQuery1.First;
   While not ADOQuery1.Eof do
       Begin
           i:=4;
           TP:=0;
           For j:=1 to 6 do
             Begin
                 If ADOQuery1.FieldByName('Valeur'+inttostr(j)).isnull then i:=i-1
                 else TP:= TP + ADOQuery1.FieldByName('Valeur'+inttostr(j)).asfloat;
             end;
           ADOQuery1.Edit;
           ADOQuery1.FieldByName('MoyVal').value:= FormatFloat('0.00', TP / i);
           ADOQuery1.Next;
       end;
end;


Est-ce que je pourrai tenir ma réponse comme Acceptée!  
vendredi 10 novembre 2006 à 09:45:55 | Re : Calcul de la moyenne

yvessimon

Bonjour,
Regarde avec une commande SQL

yvessimon
vendredi 10 novembre 2006 à 11:37:41 | Re : Calcul de la moyenne

sim51

Membre Club

Salut,
Et oui le SQL permet d'effectuer des opérations mathématiques sur le même champs d'une table. En effet on peut faire la moyenne, la somme, avoir l'ecart type, le max et le min.
Regarde la fonction AVG de SQL :d
Si tu veux plus d'aide, peux tu montrer la structure de ta table, et le champs sur lequel tu veux faire la moyenne.
Bone continuation.

N'oubliez d'aller voir le règlement de C-S ici
N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
vendredi 10 novembre 2006 à 13:05:47 | Re : Calcul de la moyenne

mtaallah

Salut,
   C'est ce que je dis, je cherche une commande avec SQL...
    J'ai essayé avec la commande AVG mais je n'ai pas pu donner le syntax exact de l'operation... en plus de ça, d'après la documentation fournie avec Access, AVG permet de calculer la moyenne sur un chams complet (sur toute une colonne) et non pas au niveau des lignes.
   Plus précisamment, si j'ai les champs suivants dans la table Produit de ma base de données Access:
             - Ref         // Référence du produit (primary key)
             - Valeur1
             - Valeur2
             - Valeur3
             - Valeur4
             - MoyVal  // Moyenne des 4 valeurs pour chaque produit

   et je veux que le champ MoyVal reçoit la moyenne des quatres champs Valeur1, Valeur2, valeur3 et Valeur4...
    La fonction AVG me permet de calculer la moyenne des Valeur1 pour tous les produits.
   Je ne suis pas sûr, mais c'est ce que j'ai compris d'après mes essais.
Merci


Cette discussion est classée dans : valeur1, champs, moyenne, adoquery1, tp


Répondre à ce message

Sujets en rapport avec ce message

Ne pas ajouter d'autres enregistrements [ par mtaallah ] Salut,  J'utilise les composant ADOTable -> DataSource -> DBGrid pour géré une Base de données constituée d'une seule table "Produit" construite de 5 Rang (Classement) avec ADOQuery. [ par mtaallah ] Salut à tous,   j'essaye d'effectuer un certain rangement (classement) pour les valeurs d'un champ au sein d'un ADOQuery,   La procédure se fait en cl ADOQuery + DBGrid : rafraichissement [ par Guillemouze ] salut tout le monde, j'ai un petit souci sur l'utilisation d'une dbgrid (je pense que le probleme vien d'elle).voila le topo :j'ai une form sur laquel gerer un projet de gestion d'etat civil [ par MOUNI28 ] bonjour,je suis entraine de realiser un logiciel qui gere une gestion des etats civilj'ai crée ma base de donnée sous acsses et je la combiner avec De question sur les composant "combobox "et "Maskedit" [ par MOUNI28 ] Bonjour,1-comment déplacer le focus d'un combobox vers un autre?2-comment tester si le champs d'un "maskedit" est vide ou non ?(c.a.d quand j'oublie d Problemes avec QReport [ par gebu34 ] Bonjour,J'utilise Delphi6 et les composants KADAO (pour base Access). Je voudrais faire un état avec QReport (en standard avec Delphi6), mais le résul la création des champs ADT [ par Salim23031971314 ] comment créer des champs ADT Update données Excel avec ADO [ par snoops71 ] Bonjour,J'ai un souci avec une requete UPDATE utilisant ADO (ADOQuery) sur un fichier Excel (moteur Jet)Je developpe sous C++ Builder mais mes problèm champs dbedit --> modification de données [ par sraverdy ] Bonjour,j'ai une fiche avec 50  dbedit (edit de base de données) , et je cherche à céer une fiche qui me donne une récap avec uniquement  les dbedit m Deux champs d'une table dans un TCombobox [ par braderic ] Bonsoir,hé oui encore un probleme, je cherche a remplir un Tcombobox avecune table a deux champs: (Numauto, libelle): le libelle etant affiché dans le


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales