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 26/07/2006, 10h07   #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 [forms 6i / 9i] calcul de moyenne pondérée avec des items calculés

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:
+----+----+----------
VOL PA MPOND
----------------------
1 5
2 3
+----+----+----+----+
MPOND = 3.67
+----+----+----+----+
La moyenne pondérée est obtenue en faisant :
( (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.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 15h46   #2
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 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...
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 16h48   #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
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é ?
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2006, 01h10   #4
Membre éprouvé
 
Avatar de star
 
Inscription : février 2004
Messages : 450
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 450
Points : 417
Points : 417
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
.
star est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2006, 08h31   #5
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 star
A tester
C'est effectivement la solution que j'ai retenue et qui marche puisqu'elle m'a permis de terminer la mise en place de ces moyennes pondérées.

Je te remercie quand même de ton intérêt pour ce post, ôh combien impopulaire
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 11h58.


 
 
 
 
Partenaires

Hébergement Web