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

Forms Oracle Discussion :

[8i][forms 6i] n'afficher que les décimales significatives


Sujet :

Forms Oracle

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut [8i][forms 6i] n'afficher que les décimales significatives
    Salut tout le monde,

    Sous forms 6i et aussi globalement sous Oracle à partir de la version 8i, je cherche un (et un seul) masque de format permettant de n'afficher que les décimales significatives d'un nombre.

    Exemple :
    valeur sans aucun masque => avec le "bon" masque
    8.060 => 8.06
    8.600 => 8.6
    8.000 => 8
    0.800 => 0.8
    ...

    Ma question me paraît élémentaire mais même en faisant une recherche avancée et en fouillant dans la doc je n'arrive pas à utiliser le même format pour gérer tous ces cas.

    Merci d'avance.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Utilisez le format suivant : 'fm9990.99999999'
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par SheikYerbouti
    Utilisez le format suivant : 'fm9990.99999999'
    J'ai fait plusieurs tests et je n'ai qu'un seul exemple qui me pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    8i CYRIL> l
      1  SELECT TO_CHAR(8.000, 'FM9990.99999999') FORMATE
      2* FROM DUAL
    8i CYRIL> /
     
    FORMATE
    --------------
    8.
     
    1 ligne sélectionnée.
    Il n'y a pas de moyen de supprimer le séparateur de décimales à l'affichage ?

    PS : merci pour la réponse et désolé de ne pas avoir su comprendre la doc
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Je reviens à la charge avec ce topic.
    Actuellement, pour gérer correctement l'affichage des nombres voici le mieux que j'ai réussi à faire :
    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
    21
    8i CYRIL> SELECT DECODE( SUBSTR(
      2                        TO_CHAR(21, 'FM9990.9999'),
      3                        -1,
      4                        1
      5                 ),
      6                 '.',
      7                 REPLACE(
      8                         TO_CHAR(21, 'FM9990.9999'),
      9                         '.',
     10                         NULL
     11                  ),
     12                 TO_CHAR(21, 'FM9990.9999')
     13         ) NB_FORMATE
     14  FROM DUAL
     15  /
     
    NB_FORMATE
    ----------
    21
     
    1 ligne sélectionnée.
    ça me paraît bien compliqué pour un traitement que tous les développeurs oracle doivent utiliser, non ?

    PS : je n'ai pas réussi à utiliser ACCEPT, COLUMN, DEFINE, etc. sous SQLPlus pour permettre une interaction de cette requête avec l'utilisateur (j'utilise 3 fois le même nombre)...
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par Magnus
    ça me paraît bien compliqué pour un traitement que tous les développeurs oracle doivent utiliser, non ?
    Non, le format que vous souhaitez n'est pas courant. On affiche toujours les décimales ou jamais, mais rarement les deux !
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Sous forms je ferai quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if trunc (mon_nb) = mon_nb then
       set_item_property ('mon_chps', format_mask, '999990');
    else
       set_item_property ('mon_chps', format_mask, 'FM999990.999999');
    end if;
    Ou en SQL :
    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
    SQL> select decode (&&mon_nb, trunc (&&mon_nb), trim(to_char (&&mon_nb, '999990')), to_char (&&mon_nb, 'FM99990.99999')) from dual;
    Enter value for mon_nb: 8
    old   1: select decode (&&mon_nb, trunc (&&mon_nb), trim(to_char (&&mon_nb, '999990')), to_char (&&mon_nb, 'FM99990.99999')) from dual
    new   1: select decode (8, trunc (8), trim(to_char (8, '999990')), to_char (8, 'FM99990.99999')) from dual
    DECODE(8,TRU
    ------------
    8
     
    SQL> undefine mon_nb
     
    SQL> select decode (&&mon_nb, trunc (&&mon_nb), trim(to_char (&&mon_nb, '999990')), to_char (&&mon_nb, 'FM99990.99999')) from dual;
    Enter value for mon_nb: 8.060
    old   1: select decode (&&mon_nb, trunc (&&mon_nb), trim(to_char (&&mon_nb, '999990')), to_char (&&mon_nb, 'FM99990.99999')) from dual
    new   1: select decode (8.060, trunc (8.060), trim(to_char (8.060, '999990')), to_char (8.060, 'FM99990.99999')) from dual
    DECODE(8.060
    ------------
    8.06
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par SheikYerbouti
    Non, le format que vous souhaitez n'est pas courant. On affiche toujours les décimales ou jamais, mais rarement les deux !
    Vous voulez dire qu'en production vous affichez les décimales non significatives en particulier dans les éditions que vous faîtes sur Report ?
    Je suis en effet surpris de me rendre que ma demande est "marginale".

    plaineR >> ta solution me plaît beaucoup mais comment l'adapter pour un item appartenant à un bloc de données multi-enregistrements ?
    Je pensais utiliser SET_ITEM_INSTANCE_PROPERTY mais le paramètre format_mask n'existe pas pour cette méthode interne.

    Quoi qu'il en soit merci de vos réponses.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  8. #8
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par Magnus
    Je suis en effet surpris de me rendre que ma demande est "marginale".
    Connaissez-vous beaucoup de logiciels (y compris des tableurs comme Excel) qui permettent ce type de formatage ?
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  9. #9
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par SheikYerbouti
    Connaissez-vous beaucoup de logiciels (y compris des tableurs comme Excel) qui permettent ce type de formatage ?
    C'est le formattage par défaut d'excel de n'afficher que les décimales significatives, non ?

    Citation Envoyé par Magnus
    plaineR >> ta solution me plaît beaucoup mais comment l'adapter pour un item appartenant à un bloc de données multi-enregistrements ?
    Je pensais utiliser SET_ITEM_INSTANCE_PROPERTY mais le paramètre format_mask n'existe pas pour cette méthode interne.
    Dans ce cas la seule solution qui me semble possible, c'est de créer un item de type varchar2 et de gérer le format dans le post-query en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if trunc (mon_nb) = mon_nb then 
       mon_item_char := ltrim(to_char (mon_item_number, '999990')); 
    else 
       mon_item_char := to_char (mon_item_number, 'FM999990.999999'); 
    end if;
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  10. #10
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par plaineR
    C'est le formattage par défaut d'excel de n'afficher que les décimales significatives, non ?
    Il s'agit en fait d'un non-format. Dans les formatages typique "Nombre", un tel format n'existe pas.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par SheikYerbouti
    Connaissez-vous beaucoup de logiciels (y compris des tableurs comme Excel) qui permettent ce type de formatage ?
    Oui c'est vrai qu'en réfléchissant plus longuement les nombres sont rarement formatés avec un nombre de décimales dynamiques.

    plaineR >> je n'ai pas testé mais je comprends le principe.

    Merci à vous 2 pour votre coup de main.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

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

Discussions similaires

  1. [MySQL] N'afficher que les fichiers du serveur Ftp insérés dans la base de données
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 03/08/2006, 19h41
  2. N'afficher que les données du mois en cours
    Par faiglon dans le forum Access
    Réponses: 5
    Dernier message: 25/07/2006, 13h17
  3. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50
  4. n'afficher que les "print" dans query annalyser
    Par sky_perrinos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/12/2004, 10h58
  5. [XML] n'afficher que les 3 premiers!
    Par Little Sloth dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/06/2004, 10h59

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