Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/03/2006, 09h58   #1
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2006, 10h20   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 530
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 530
Points : 6 460
Points : 6 460
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
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2006, 14h15   #3
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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 :
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
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2006, 10h42   #4
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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 :
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)...
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2006, 10h46   #5
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 530
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 530
Points : 6 460
Points : 6 460
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
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2006, 11h05   #6
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
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 866
Points : 3 448
Points : 3 448
Sous forms je ferai quelque chose comme cela :
Code :
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 :
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.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 08h30   #7
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 09h17   #8
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 530
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 530
Points : 6 460
Points : 6 460
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
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 09h41   #9
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
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 866
Points : 3 448
Points : 3 448
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 :
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.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 09h47   #10
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 530
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 530
Points : 6 460
Points : 6 460
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
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 10h56   #11
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h08.


 
 
 
 
Partenaires

Hébergement Web