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

Bases de données Delphi Discussion :

Comment formater le resultat avec 2 chiffres avec SUM de SQL


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut Comment formater le resultat avec 2 chiffres avec SUM de SQL
    Bonjour,

    J'ai cette ligne dans une requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Mat, Cod_Classe, CodeMat, LibMat, Coeff, Trimestre, sum(Note) as Total, Sum(Note)/3 as Moy, Sum(Note)/3*Coeff as Ponderer, count(Mat)* sum(Note)/3 as Moy_Classe from Note, Matiere, Eleve';
    sum(Note)/3 ramène des nombres décimal à plusieurs chiffres après la virgule.
    Comment faire pour limiter à 2 chiffres après la virgule? .
    Merci pout toutes interventions.

  2. #2
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sum(Note) as Total
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CAST(sum(Note) as NUMERIC(10,2)) as Total
    (syntaxe à vérifier selon SGBD, là c'est OK pour sql server par exemple)

  3. #3
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    si vous utiliser des objets ADO vous pouvez jouez sur la propriété displayformat du champs en question dans l'éditeur de champs

  4. #4
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    J'utilse Paradox.
    J'ai appliquer ce que vous avez dit mais il n'ya pas de changement. la requête est exécuté mais il ya toujours plusieurs chiffreaprès la virgule.
    Peut-être que ca ne marche pas avec Paradox.

  5. #5
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    lorsque vous double cliquer sur objet table une petit fentere sort avec un clique droit de la sourie et dans le menu faite ajouter des champs
    une fois le champs selectioner dans la proprité disyplayformat "#,##"

  6. #6
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut,

    Je m'excuse pour le temps de reponse un peu longt.
    J'ai exactement fait ce que vous avez dit, en utilisant #,## dans la prooriété displayFormat des champs concernés par les calculs, dans la table Note.
    Il n'ya pas de changement. il ya toujours plusieurs chiffres après la virgules.
    voici la requête :
    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 TApercu_Notes.ButtonOKClick(Sender: TObject);
    begin
    Note.Query_Note.sql.Clear;
    Note.Query_Note.sql.Add('Select Mat, Cod_Classe, CodeMat, LibMat, Coeff, Trimestre, cast(sum(Note) as numeric(10,2)) as Total, cast(Sum(Note)/3 as numeric(10,2)) as Moy, cast(Sum(Note)/3*Coeff as numeric(10,2)) as Ponderer,');
    Note.Query_Note.sql.Add('count(Mat)* cast(sum(Note)/3 as numeric(10,2)) as Moy_Classe from Note, Matiere, Eleve');
    Note.Query_Note.sql.Add('where Note.CodeMat = Matiere.CodeMat');
    Note.Query_Note.sql.Add('And Eleve.Mat = Note.Mat');
    Note.Query_Note.sql.Add('And Eleve.Cod_Classe = Note.Cod_Classe');
    Note.Query_Note.sql.Add('And Cod_Classe = '+ QuotedStr(ClasseEdit.text));
    Note.Query_Note.sql.Add('And Trimestre = '+ QuotedStr(PeriodeEdit.text));
    Note.Query_Note.sql.Add('group by Mat, Cod_Classe, CodeMat, LibMat, Coeff, Trimestre');
    Note.Query_Note.Open;
    Note.QuickRepNote.Preview;
    end;

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    A la palce de #,##, mets 0.00

  8. #8
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Oui j'ai bel et bien remplacé 0.00 à la place de #.##, mais rien ne se passe.
    Après tout ce que vous avez fait, je ne comprend pas pourquoi ça ne marche pas.
    C'est vraiment bizarre. .

  9. #9
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    vous utiliser quel type d'objets pour afficher le résultat de vos données si vous utiliser les ceux de de la palette DBControls sa devrai marcher.

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Sinon tu peux faire en modifiant directement le canvas du DbGrid

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TfrmMain.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    With Sender as TDbGrid do
      if lowercase(Column.FieldName) = 'total' then
      begin
     
          Canvas.TextOut(Rect.Left+2,Rect.Top+2, FormatFloat('0.00',Column.Field[DataCol]).AsFloat));
      end
      else
        TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
    end;
    Il faut mettre la propriété DefaultDrawing du DbGrid à False

  11. #11
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    J'utilise QuickReport pour afficher mes données. Je n'utilise pas un DBGrid.

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par sondo
    J'utilise QuickReport pour afficher mes données. Je n'utilise pas un DBGrid.

    Si mes souvenirs son bon ton composant doit avoir alors un OnBeForePrint ?
    Et tu dois pouvoir formatter la valeur avant l'impression, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Value := FormatFloat('0.00',StrToFloatF(Value,0.00));
    A tester bien sur, sans QuickReport (j'ai D2005) je ne peux que te guider via mes souvenirs ^^

  13. #13
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Je suis vraiment un débutant.
    J'ai mit dans la propriété BeforePrint de TQuickRep cette ligne dont tu m'as indiqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Value := FormatFloat('0.00',StrToFloatF(Value,0.00));
    Mais il reste à déclarer Value. Je doit le déclarer comme quel type de variable ?.

  14. #14
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par sondo
    Je suis vraiment un débutant.
    J'ai mit dans la propriété BeforePrint de TQuickRep cette ligne dont tu m'as indiqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Value := FormatFloat('0.00',StrToFloatF(Value,0.00));
    Mais il reste à déclarer Value. Je doit le déclarer comme quel type de variable ?.

    Ton composant QDbLabel n'a pas lui aussi un événement OnBeforePrint ou quelque chose dans le style ?
    Si oui, donne moi le code de l'événement (procedure xxxBeforePrint ( ... ) )
    Car c'est la que tu dois mettre le bout de code que je t'ai fournit (bien sur faut l'adapter)

  15. #15
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    Tous les composants DB du QR on la propiete Mask. Tu doix mettre ici par exemple #,##0.00

    A+

  16. #16
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Ca marche pour proprété Mask.
    Merci à vous tous qui m'avez donner un peu de votre connaissance, de votre petience et de votre temps.
    Vive la programmation et vive Delphi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/12/2008, 11h17
  2. Réponses: 3
    Dernier message: 21/10/2008, 14h09
  3. Réponses: 21
    Dernier message: 01/09/2008, 11h16
  4. Comment recuperer le resultat de l'execution d'une chaine sql
    Par davidou2001 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 12/06/2007, 13h29
  5. Comment insérer le résultat d'une commande avec vim
    Par zelda dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 28/12/2005, 09h32

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