|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 7 ![]() |
Bonjour,
Je dois créer une forms (10g) pour gérer des formes (un rectangle par ex) avec leur dimentions X et Y... Mais comme rien n'est simple ces formes peuvent être tournées avec les valeurs de rotations suivantes : 0°, 90°, 180° ou 270°... J'ai donc créé les 3 tables suivantes : - Forme (Frm_Id, X, Y), - Rotation (Rotation, Inverser_XY) - Forme_Rota(Frm_Id,Rotation) Et les 2 clefs étrangères sur Forme_Rota nécessaires... Mon module contient 2 blocs "Forme" et "Forme_Rota" avec la relation maître-détail pour gérer tout cela... Le bloc "Forme_Rota" est multi-ligne (4 enregistrements affichés)... Je voudrais que pour chaque forme la première rotation saisie soit obligatoirement 0°, puis ne plus proposer les rotations déjà choisies (j'utilise une LOV pour récupérer les 4 rotations de la table "Rotation") . Je voudrais également récupérer automatiquement les dimentions saisies dans la ligne 0° et les inverser pour les rotations qui ont "Inverser_XY" à vrai... Mon problème est le suivant : Je vois comment récupérer les valeurs contenues dans les tables et modifier les champs lors de la saisie de la nouvelle rotation (en utilisant le trigger "WHEN-VALIDATE-ITEM" sur l'item "Rotation" du bloc "Forme_Rota"), mais je suis coincé si l'utilisateur renseigne plusieurs rotations différentes avant de faire un "COMMIT. Je pensais balayer l'ensemble des lignes pour récupérer les valeurs des lignes précédentes mais les fonctions "FIRST_RECORD" et "NEXT_RECORD" sont interdites dans les triggers de validation ! D'avance un grand merci aux courageux qui m'auront lu jusqu'au bout (je sais c'est long!) et à tous ceux qui voudront bien me répondre.... |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Pour vérifier "en live" des données de lignes différentes, il faut faire une Colonne Formula.
La formule appelle une fonction. Au when-validate-item, tu positionne un paramètre à la valeur de ton champ exemple :parameter.p_rota := :forme_rota.rotation; La fonction fait juste un Code :
IF :forme_rota.rotation = :parameter.p_rota THEN RETURN 1 else RETURN 0; END IF; Dans le WVI, tu testes la valeur de cette colonne summary. le WVI devient Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 7 ![]() |
Merci McM, cela devrai me permettre de ne valider que des codes inexistant...
Par contre sais tu s'il y a un moyen de restreindre les rotations proposées par la LOV associée pour en exclure les rotations déjà choisies? Merci |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Je n'ai jamais essayé.
Peut être en mémorisant les rotations déjà renseignées dans des variables et en faisant un MINUS Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 7 ![]() |
Cela pourrait marcher...
Je programmais avant avec un autre langage qui transcrivait directement chaque opération dans la base, et j'avoue que j'ai gardé certains reflexes dans ma façon de concevoir une application... En tous cas je te remercie. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com