|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Bonjour,
Sous forms 6i et 9i, je cherche à mettre en place un calcul de moyenne pondérée dans un bloc multi lignes. Ex : Citation:
( (1*5) + (2*3) ) / (1+2) = 3.67 soit SUM( VOL * PA ) / SOM(VOL) En lisant l'article de Sheikyerbouti sur les items calculés, j'arrive quasiment à mettre en place ce calcul de moyenne pondérée mais j'obtiens un message d'erreur FRM-30401. L'origine de ce message d'erreur réside dans le fait que pour calculer cette moyenne pondérée, la seule solution que j'ai trouvée, consiste à passer par des items calculés intermédiaires : IT1 = VOL * PA IT2 = SUM(IT1) IT3 = SUM(VOL) MPOND = IT2 / IT3 = SOM( VOL * PA ) / SOM(VOL) Le message d'erreur est causé par le fait que IT2 est la somme d'un item calculé (i.e. IT1) par une formule utilisateur (c'est ce que j'en conclus quand je lis le descriptif du message d'erreur). Comment arriver à effectuer ce calcul de moyenne pondérée que ce soit avec des items calculés ou non ? Merci d'avance pour tout conseil, remarque, etc. |
|
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Je me permets de reformuler et simplifier ma question en supposant que je n'ai pas eu de réponse car j'ai été confus
Dans un bloc multi lignes, j'ai 2 colonnes : PA et VOL pour lesquelles je souhaite calculer la moyenne pondérée en temps réel sachant que : - la moyenne pondérée = la somme du produit suivant pour chaque ligne : PA * VOL soit SUM( VOL * PA ) - j'ai choisi d'utiliser les items calculés car je n'ai trouvé aucune autre manière de procéder pour disposer de cette information en temps réel. Quand l'utilisateur change une valeur de VOL ou PA pour n'importe quelle ligne alors le résultat doit être mis à jour automiquement. N'hésitez pas à me demander des précisions... |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
J'ai quasiment réussi à mettre en place ce traitement mais il faudrait que j'arrive à utiliser DECODE dans un item calculé de type FORMULE et Oracle génère une erreur lorsque je tente de saisir DECODE directement dans la formule.
D'où ma question : comment saisir DECODE dans la formule d'un item calculé ? |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : février 2004 Messages : 450 ![]() |
DECODE n'est utilisable que dans les requêtes SQL. C'est une fonction SQL, non une fonction PL/SQL.
Une solution serait de créer une fonction utilisateur propre à la Form (Program Unit) ou dans une librairie PL/SQL. Tu passes les paramètres à la fonction dans laquelle tu reproduis la fonction du DECODE avec des IF THEN ELSE et tu retourne le résultat dans l'item calculé. A tester . |
|
|
00
|
|
|
#5 | |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Citation:
Je te remercie quand même de ton intérêt pour ce post, ôh combien impopulaire |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com