IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

Modifier la saisie d'un item en fonction des enregistrements précédents.


Sujet :

Forms Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Modifier la saisie d'un item en fonction des enregistrements précédents.
    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....

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    IF :forme_rota.rotation = :parameter.p_rota THEN return 1 else return 0; END IF;
    Une dernière colonne à créer sur ton bloc qui fait la somme de la colonne formula.

    Dans le WVI, tu testes la valeur de cette colonne summary.
    le WVI devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    :parameter.p_rota := :forme_rota.rotation;
    IF :forme_rota.summary_colonne > 1 THEN RAISE ... END IF;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    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

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    WITH rota AS (
    	SELECT '0' deg FROM dual UNION ALL
    	SELECT '90' deg FROM dual UNION ALL
    	SELECT '180' deg FROM dual UNION ALL
    	SELECT '270' deg FROM dual )
    SELECT *
    FROM rota
    MINUS 
    SELECT :param1 FROM dual
    MINUS 
    SELECT :param2 FROM dual
    MINUS 
    SELECT :param3 FROM dual
    MINUS 
    SELECT :param4 FROM dual
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.6] Organisation en fonction des enregistrements d'un champ
    Par Orang- dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/06/2014, 18h32
  2. [AC-2010] Photo dans un état en fonction des enregistrements
    Par YVES69 dans le forum IHM
    Réponses: 5
    Dernier message: 20/02/2012, 08h11
  3. Réponses: 5
    Dernier message: 20/08/2009, 10h36
  4. Réponses: 2
    Dernier message: 29/11/2008, 17h55
  5. Modifier la valeur d'un champ en fonction d'une autre...
    Par venividivici dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 25/08/2005, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo