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

PL/SQL Oracle Discussion :

Affichage des montants avec le bon format


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Par défaut Affichage des montants avec le bon format
    Salut tout le monde

    J'aurais besoin de votre aide pour afficher le bon format d'un montant que j'ai déjà calculé.

    Le souci se pose bien sûr au moment de l'affichage, le montant doit avoir un nombre de chiffre après la virgule, comme ce nombre de chiffre peut varier, je me demandais comment je pourrais faire pour bien gérer mon affichage.

    L'exemple suivant expliquera tout: soit N le nombre de chiffre après la virgule, si N = 2, le montant devra être 1002,00, si N = 3 le montant sera alors 1002,000 etc.

    En vous remerciant d'avance.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Une possibilité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT RPAD (TO_CHAR (TRUNC (mon_nombre, n)),
                 LENGTH (CEIL (mon_nombre)) + n + 1,
                 '0' )
      FROM DUAL

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    En agissant directement sur le format celà à l'air de fonctionner :
    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
    with Test_nm AS
    (
    select level as lvl, round(dbms_random.value(1, 1000), 5) as nm, round(dbms_random.value(1, 3)) as nb
    from dual
    connect by level <= 10
    )
    select lvl, nm, nb, to_char(nm, 'FM999D' || case nb when 1 then '9' when 2 then '99' when 3 then '999' end) as nm_char
    from Test_nm;
     
    LVL	NM		NB	NM_CHAR
    1	110.3196	2	110,32
    2	864.80176	2	864,8
    3	159.15888	3	159,159
    4	95.15295	1	95,2
    5	493.41549	2	493,42
    6	708.08456	2	708,08
    7	336.03994	2	336,04
    8	587.04549	1	587,
    9	673.23854	3	673,239
    10	620.45914	1	620,5

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    J'ai compris qu'on a un nombre avec m décimales, et on veut en afficher n.
    Si m est inférieur à n, je ne sais pas si votre exemple fonctionne.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'ai peut-être mal compris le problème, quelques exemples ne seraient pas de trop !

  6. #6
    Membre confirmé
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Par défaut
    Merci les gars pour vos conseils.

    Pour les exemples, en voici une liste:

    N = 2; Nombre = 100; L'affichage devra être = 100,00
    N = 3; Nombre = 100.12; L'affichage devra être = 100,120
    N = 2; Nombre = 100.123; L'affichage devra être = 100,12
    N = 0; Nombre = 100.124; L'affichage devra être = 100
    N = 1; Nombre = 100; L'affichage devra être = 100,0
    etc.

    Pour l'instant j'utilise le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  DECODE( N,
                    0, NVL(TO_CHAR(nombre, 'FM9G999G999G999G999G999G990')       , '0'),
                    1, NVL(TO_CHAR(nombre, 'FM9G999G999G999G999G999G990D0')     , '0'),
                    2, NVL(TO_CHAR(nombre, 'FM9G999G999G999G999G999G990D90')    , '0'),
                    3, NVL(TO_CHAR(nombre, 'FM9G999G999G999G999G999G990D990')   , '0')) 
    FROM    DUAL
    3 c'est le nombre maximum de chiffres après la virgule que peut avoir une devise dans n'importe quel pays. Cette formule marche bien, mais puisque j'ai pas mal de montants à afficher, je ne voudrais pas m'amuser à écrire ce bout de code pour chaque montant ! Tout autre moyen plus simple sera le bienvenu

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

Discussions similaires

  1. affichage des caracteres avec loadVars
    Par 10dmz-4amx dans le forum Flash
    Réponses: 2
    Dernier message: 18/11/2006, 17h08
  2. [Wamp] Problème d'affichage des pages avec WAMP
    Par FredLam dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 01/11/2006, 19h19
  3. Problème d'affichage des graphes avec Tomcat
    Par _Janu_ dans le forum BIRT
    Réponses: 11
    Dernier message: 20/09/2006, 15h30
  4. probleme d'affichage des informations avec quickrep
    Par hamadi_insat dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/09/2006, 19h31
  5. Affichage des montant en format 00.00
    Par fraizas dans le forum Langage
    Réponses: 1
    Dernier message: 27/02/2006, 17h05

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