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 :

[Forms6i] Un IF-ELSIF au comportement étrange


Sujet :

Forms Oracle

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Points : 74
    Points
    74
    Par défaut [Forms6i] Un IF-ELSIF au comportement étrange
    Qqun aurait-il une explication au phénome etrange que je rencontre actuellement : dans un bloc multiligne, certains record ont un item dont la propriété ENABLE est à FALSE.
    Or quand je passe d'un record dont l'item a la propriété ENABLE est à TRUE, à un item a la propriété ENABLE est à FALSE, l'item reste actif.
    Je me plonge dans le code, et dans When-new-record-instance je tombe sur le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IF :BLK_T000.APP = '1' THEN
    	SET_ITEM_PROPERTY('APP_DUR',ENABLED,PROPERTY_FALSE);
    ELSIF :BLK_T000.APP = '2' THEN
    	SET_ITEM_PROPERTY('APP_DUR',ENABLED,PROPERTY_TRUE);
    END IF;
    Quand je suis l'evolution de ce test dans le debugger, je constate que je passe dans les deux parties du IF !

    Afin de mieux cerner le probleme, je précède les deux SET_ITEM_PROPERTY par un l'envoi d'un message. Et là, surprise, j'affiche bien un seul des deux messages (celui de la 1ere partie du IF) mais je passe quand meme dans la seconde partie du IF (sans afficher le message donc) pour passer sur le SET_ITEM_PROPERTY qui met à ENABLE mon item

    Autant vous dire que là j'ai l'impression d'etre dans un mauvais remake d'X-Files
    En même temps, vu le comportement, je me dis qu'il doit y avoir un raison logique... Qqun aurait une idée ?

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Moi, ce que je me dis :
    1- je n'ai pas confiance dans le comportement du debbuger, donc s'il ne t'affiche qu'une fois le message, c'est qu'il ne passe que dans la première condition
    2- s'il te réactive ton item :
    - soit tu es dessus et il n'arrive pas à le désactiver (mais là tu devrais avoir un message d'erreur)
    - soit ailleurs dans le code tu le réactives

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par plaineR
    1- je n'ai pas confiance dans le comportement du debbuger, donc s'il ne t'affiche qu'une fois le message, c'est qu'il ne passe que dans la première condition
    tu lui en veux vraiment à ce debugger
    N'empeche tu n'as pas tout a fait tort, puisque j'ai découpé le IF-ELSIF en deux IF distincts et placé la seconde partie au dessus de la premiere et maintenant je ne passe plus dans les deux IF... par contre mon item est toujours actif...


    Citation Envoyé par plaineR
    2- s'il te réactive ton item :
    - soit tu es dessus et il n'arrive pas à le désactiver (mais là tu devrais avoir un message d'erreur)
    C'est pourtant le cas, je clique effectivement sur l'item que je veux desactiver quand j'arrive sur la ligne. Et effectivement je pensais qu'il allait me sortir un message d'erreur mais non, meme pas...

    Citation Envoyé par plaineR
    - soit ailleurs dans le code tu le réactives
    je ne l'active que dans deux endroits dans le code, j'ai mis des affichages dans les deux cas, mais le seul endroit par où je passe c'est le trigger WNRI...

  4. #4
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par lafouine
    tu lui en veux vraiment à ce debugger
    Disons qu'il m'a trahi plusieurs fois

    Et si dans le WNRI, avant de faire le set_item_property, tu fais un go_item pour te placer sur un autre item que celui que tu désactives ?

  5. #5
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Points : 74
    Points
    74
    Par défaut
    Bon j'ai solutionné mon probleme en faisant un go_item vers un item actif avant de faire le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET_ITEM_PROPERTY('APP_DUR',ENABLED,PROPERTY_FALSE);
    et là mon item APP_DUR reste bien désactivé...

    Mais quand meme si qqun a une explication concernant cette histoire, ca m'interesse... Que Forms rouspete parce que je lui demande de desactiver l'item sur lequel le focus se situe, je comprends, mais par contre je ne comprends pas qu'il ne me le dise pas plus clairement...

  6. #6
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par plaineR
    Et si dans le WNRI, avant de faire le set_item_property, tu fais un go_item pour te placer sur un autre item que celui que tu désactives ?
    j'ai eu la même idée !
    Commencerais-je à prendre les bons réflexes sous Forms ??

  7. #7
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    En général, il vaut mieux gérer l'activation / désactivation des items dans les triggers PRE-RECORD, cela t'évite ce genre de problème

    Si tu es sur le même enregistrement et que tu désactives un enregistrement courant tu as un messages d'erreur forms ("FRM-41032 Cannot set enabled current item").

    Par contre, il est vrai que j'ai remarqué que lorsque tu changes d'enregistrement tu n'as pas forcément ce message. Je me demande si ce n'est pas pour éviter les messages intempestifs dans les blocs multi lignes avec les triggers post-query, pre-record etc.

  8. #8
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par plaineR
    En général, il vaut mieux gérer l'activation / désactivation des items dans les triggers PRE-RECORD, cela t'évite ce genre de problème
    ok c'est noté, je vais transvaser mon code du trigger WNRI au trigger PRE-RECORD si c'est plus propre...

    Par contre j'ai le soucis inverse maintenant... Quand je suis sur un record dont l'item est desactive et que je veux passer sur un record dont le meme item est actif, là rien ne se passe (PRE-RECORD et WNRI ne se declenchent pas)
    Et là j'ai peur qu'il n'y ait pas de moyen de contournement non ?


    Citation Envoyé par plaineR
    Si tu es sur le même enregistrement et que tu désactives un enregistrement courant tu as un messages d'erreur forms ("FRM-41032 Cannot set enabled current item").

    Par contre, il est vrai que j'ai remarqué que lorsque tu changes d'enregistrement tu n'as pas forcément ce message. Je me demande si ce n'est pas pour éviter les messages intempestifs dans les blocs multi lignes avec les triggers post-query, pre-record etc.
    ah ok
    merci pour l'explication !

  9. #9
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par lafouine
    Par contre j'ai le soucis inverse maintenant... Quand je suis sur un record dont l'item est desactive et que je veux passer sur un record dont le meme item est actif, là rien ne se passe (PRE-RECORD et WNRI ne se declenchent pas)
    Et là j'ai peur qu'il n'y ait pas de moyen de contournement non ?
    Je ne comprends pas bien, tu veux dire que tu n'arrives pas à changer d'enregistrement ?

  10. #10
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par plaineR
    Citation Envoyé par lafouine
    Par contre j'ai le soucis inverse maintenant... Quand je suis sur un record dont l'item est desactive et que je veux passer sur un record dont le meme item est actif, là rien ne se passe (PRE-RECORD et WNRI ne se declenchent pas)
    Et là j'ai peur qu'il n'y ait pas de moyen de contournement non ?
    Je ne comprends pas bien, tu veux dire que tu n'arrives pas à changer d'enregistrement ?
    oui c'est bien ca !
    pour etre plus clair, on va dire que j'ai deux item dans mon bloc multiligne :
    - Item A qui est toujours actif
    - Item B qui est peut être activé/desactivé suivant la valeur de A

    Quand je suis sur une ligne où la valeur de A fait que B est desactivé, alors toutes les autres lignes voient leur item B desactivé (meme si la valeur de A fait que normalement B doit etre actif).
    Si, justement je souhaite passer de ma ligne où B est désactivé à une autre où il est actif, je ne peux le faire qu'en cliquant sur l'item A de ma nouvelle ligne. Si je clique sur l'item B, je ne bouge pas et je ne déclenche aucun trigger...

  11. #11
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    La seule solution de contournement que je vois, c'est de ne pas désactiver l'item B, mais mettre les propriétés insert_allowed et update_allowed (voire navigable) à false et éventuellement gérer un visual_attribute pour lui donner l'apparence d'un item désactivé.

    Ce qui aurait un autre avantage, c'est qu'avec le built-in set_item_instance_property, tu pourrais ne donner l'apparence désactivé qu'aux lignes devant l'être et pas aux autres

  12. #12
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Points : 74
    Points
    74
    Par défaut
    Très bonne idée !
    Merci beaucoup plaineR !

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

Discussions similaires

  1. Comportement étrange de javascript
    Par madtroll dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 29/12/2005, 11h20
  2. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 19h44
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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