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

Delphi Discussion :

Arrondir valeur QRExpression en Delphi


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut Arrondir valeur QRExpression en Delphi
    Bienvenue tout le monde
    J'ai un cas pour l'impression dans lequel je calcule un pourcentage, mais le problème est de arrondir de la valeur apparente, par exemple : 77,77 et le résultat réel que je veux voir apparaître est : 77,76 et je veux compléter ce code pour arrondir. Merci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QRExpr1.Mask := ' #.##%';
     
    QRExpr1.Expression := 'IF(SUM(CREDIT) = 0 ,0,(SUM(DEPENCES)*100)/SUM(CREDIT))';

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Je ne connais pas le QRExpression (QR comme Quick Report ?)
    Qu'elle est la valeur réelle 77.7650001 par exemple qui dans les règles d'arrondi devient 77.77
    Est-ce que TRUNC existe ?

    Ah et sinon de terme comptable, ce n'est pas DEPENCES ni DÉPENSES mais DÉBIT.

    Cela ne pourrait-il pas être traité en SQL avant ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Je ne connais pas le QRExpression (QR comme Quick Report ?)
    C'est ça, du QuickReport
    Cela ne pourrait-il pas être traité en SQL avant ?
    c'est généralement ce que je conseille au sein du forum Quickreport (car oui, il y a un forum spécialisé, pratiquement mort) : toujours traiter les données en amont.

    Le problème de mask avec Quickreport c'est qu'il s'agit d'un masque de type FloatToText donc à ma connaissance pas d'arrondi.

    Une solution, sans passer par les données, utiliser un Onprint du QRExpression (dans ce cas virer le % qui va gêner)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure QRExpression1Print(sender : Tobject; var value : String); 
    var prct : Single;
    begin
    prct:=StrToFloat(Value);
    Value:=format('%3.2f',[prct])+'%'; 
    end;
    mais là je parle avec l'utilisation de vieille version de QuickReport (je me suis arrêté à la 3.5), je n'ai pas vérifié comment cela se passe avec des versions plus récentes
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut
    Quel que soit le résultat, je veux prendre deux nombres après la virgule

  5. #5
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 765
    Points : 960
    Points
    960
    Par défaut
    Peut-être avec la fonction : SimpleRoundTo !

    https://docwiki.embarcadero.com/Libr....SimpleRoundTo

Discussions similaires

  1. [NDK] Arrondir valeur obtenue par un calcul
    Par Atari45 dans le forum Android
    Réponses: 1
    Dernier message: 12/08/2013, 23h35
  2. arrondir valeur décimale
    Par jman94 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 30/06/2010, 17h31
  3. Réponses: 7
    Dernier message: 26/11/2008, 13h57
  4. Arrondir valeur en dessous au dessus
    Par freyliss dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 13/08/2007, 16h47
  5. [VBA-E]arrondir valeur d'une variable
    Par richou dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/04/2006, 14h48

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