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

Bases de données Delphi Discussion :

Calcul de la somme


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Calcul de la somme
    Bonjour à tous,
    J'ai une base de donnée Interbase qui contient la table C_OPERATION. Cette table contient un champ SOMME, je voudrais en calculer la somme totale .
    voici mon code
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button2Click(Sender: TObject);
    var TOTAL: currency;
    begin
     TOT:=0;
     Form1.IBQuery1.Close;      
     Form1.IBQuery1.SQL.Clear;
     Form1.IBQuery1.Sql.Add('SELECT  SUM(SOMME) as TOT_SOMME FROM C_OPERATION WHERE ID_COMPTE=:ID_Cpte');
     Form3.IBQuery1.Params.ParamByName('ID_Cpte').Value := ID_Compte_Affiche;                                                    //  Id du compte affiché
     Form1.IBQuery1.Open; 
     
    Je voudrais récupérer la somme TOT_SOMME et l'affecter à ma variable TOTAL
    
    end;


    Désolé pour cette question triviale, mais je galère dessus depuis plusieurs jours.
    Merci de vos réponses
    Jean-Louis

  2. #2
    Rédacteur/Modérateur

    Bonjour,
    Je voudrais récupérer la somme TOT_SOMME et l'affecter à ma variable TOTAL...
    Désolé pour cette question triviale
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    tot:=ibQuery1.FieldByname('TOT_SOMME').asFloat

    Mais, parce qu'il y a un mais, il y a une erreur dans votre code
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button2Click(Sender: TObject);
    var TOTAL: currency;
    begin
     TOT:=0;
     Form1.IBQuery1.Close;      
     Form1.IBQuery1.SQL.Clear;
     Form1.IBQuery1.Sql.Add('SELECT  SUM(SOMME) as TOT_SOMME FROM C_OPERATION WHERE ID_COMPTE=:ID_Cpte');
     Form3.IBQuery1.Params.ParamByName('ID_Cpte').Value := ID_Compte_Affiche;                                                    //  Id du compte affiché
     Form1.IBQuery1.Open;

    Vous mettez le paramètre dans Form3.IBQuery1 et non Form1.IBQuery1 !
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.Button2Click(Sender: TObject);
    var TOTAL: currency;
    begin
     // TOT:=0;
     IBQuery1.Close;      
    // IBQuery1.SQL.Clear;
    // IBQuery1.Sql.Add('SELECT  SUM(SOMME) as TOT_SOMME FROM C_OPERATION WHERE ID_COMPTE=:ID_Cpte');
    // les deux lignes au dessus sont remplçables par 
     IBQuery1.Sql.Text:='SELECT  SUM(SOMME) as TOT_SOMME FROM C_OPERATION WHERE ID_COMPTE=:ID_Cpte';
     IBQuery1.Params.ParamByName('ID_Cpte').Value := ID_Compte_Affiche;                                                    //  Id du compte affiché
     IBQuery1.Open; 
     tot:=ibQuery1.FieldByname('TOT_SOMME').asFloat;
    ....
    end;




    Mes conseils
    1. nommez vos composants plus explicitement
    2. évitez cette histoire de form1, vous êtes déjà dedans

    Plus pro
    1. Utilisez un TDataModule pour tout ce qui est connexion au données
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre du Club
    Merci à SergioMaster toujours aussi rapide et clair dans ses réponses


    Vous mettez le paramètre dans Form3.IBQuery1 et non Form1.IBQuery1 !
    C'est une coquille, car j'ai fait du copier coller en rectifiant et élaguant le code de tout le superflu.

    Merci encore

    JLouis