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 29/03/2006, 14h40   #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] calculs de sous-totaux

Bonjour tout le monde,

Sous forms 6i, je cherche à mettre un item qui serait le sous-total d'un item appartenant à un bloc multi-enregistrements qui est base table.

Ex :
Citation:
famille / inspecteur / pourcentage / sous-total par famille
C01 / I001 / 85 / 100 %
C01 / I002 / 15 / 100 %
D04 / I012 / 60 / 80 %
D04 / I015 / 20 / 80 %
...
Le calcul doit être effectué de la manière suivante :
pour chaque famille, le sous-total est égal à la somme pourcentage de chaque ligne de la famille.

J'ai vu dans un guide de skeikyerbouti qu'il est possible d'utiliser des items calculés mais je n'arrive pas à instaurer de rupture sur la famille (i.e. les items calculés permettent effectivement de calculer une somme mais je ne vois pas comment grouper sur la famille...).

Si vous avez une quelconque idée pour implémenter ce calcul (quitte à modifier la structure de ma table pour stocker le calcul, etc.) alors je suis ouvert à toute proposition.

PS : il n'est pas utile d'avoir le total pour chaque ligne de la famille - on souhaiterait l'avoir pour la dernière uniquement - mais cette notion me semble compliquer le contexte et m'éloigne d'une quelconque solution, non ?

Merci d'avance.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 16h36   #2
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
Une idée si tu es en 9i (ou 8i entreprise edition) :
1- tu crées une vue avec une fonction analytique qui calcule ce sous-total :
Code :
1
2
CREATE VIEW ... AS
SELECT famille, inspecteur, pourcentage, sum (pourcentage) over (partition BY famille) ss_total FROM matable;
2- dans forms:
- tu bases ton block sur ta vue
- tu renseignes les propriétes DML data target type (table) et DML data target name (le nom de ta table)
- tu mets ta colonne ss_total en insert, update à false et query only à true
ta requête en query sera basée sur ta vue, en saisie sur ta table
__________________
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 31/03/2006, 09h12   #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
Salut plaineR,

Merci de ta réponse mais je m'étonne de découvrir que ce mécanisme si courant et si facile à mettre en oeuvre sous reports est bien plus complexe sous forms.

En effet, si je devine comment fonctionne ta solution il lui manque un avantage important : comment mettre à jour les données en temps réel.
Autrement dit, lorsque je modifie une valeur, comment mettre à jour en temps réel le sous-total correspondant ?

Ex : En reprenant l'exemple précédent :
Citation:
famille / inspecteur / pourcentage / sous-total par famille
C01 / I001 / 85 / 100 %
C01 / I002 / 15 / 100 %
D04 / I012 / 100 / 100 % <-- ce sous-total doit être mis à jour
D04 / I015 / 20 / 80 %
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 09h37   #4
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
Je n'ai pas fait le test, mais peut-être que si tu mets la propriété de ton block "DML returning value" à Yes, cela mettra à jour tes données. Sinon rien ne t'empêche de ré-éffectuer un query au moment du commit et de te repositionner sur ton enregistrement et sur ton item.

Moi cela ne m'étonne pas que cela ne fonctionne pas avec forms, qui est avant tout un outil de saisie où il n'y a pas de notions de groupe d'enregistrements ni de rupture.
__________________
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 31/03/2006, 10h13   #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 plaineR
Je n'ai pas fait le test, mais peut-être que si tu mets la propriété de ton block "DML returning value" à Yes, cela mettra à jour tes données. Sinon rien ne t'empêche de ré-éffectuer un query au moment du commit et de te repositionner sur ton enregistrement et sur ton item.

Moi cela ne m'étonne pas que cela ne fonctionne pas avec forms, qui est avant tout un outil de saisie où il n'y a pas de notions de groupe d'enregistrements ni de rupture.
Effectivement, je n'ai pas testé et, pour que l'utilisateur voit les modifications en temps réel, j'en suis arrivé à la même conclusion que toi donc j'ai abandonné la mise en place de cette fonctionnalité => délestage

Merci du coup de main plaineR
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web