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 :

[Forms 9i] qui déclenche un FORM_FAILURE suite à EXECUTE_QUERY ?


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut [Forms 9i] qui déclenche un FORM_FAILURE suite à EXECUTE_QUERY ?
    Bonjour,

    Sous forms 9i, j'ai un scénario que je ne peux expliquer.
    Dans un trigger KEY-NXTBLK, j'ai le code suivant :
    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
    16
    ...
     
    	GO_BLOCK('MS');
     
    	CLEAR_BLOCK (NO_VALIDATE);
    	if form_failure then
    		msg_box('1 - form_failure');
    	end if;
     
    	EXECUTE_QUERY(ALL_RECORDS,FOR_UPDATE);
     
    	if form_failure then
    		msg_box('2 - form_failure');
    	end if;
     
    ...
    A l'exécution, j'ai le message suivant qui s'affiche : "2 - form_failure".
    J'ai vérifié en débug : FORM_FAILURE qui est à FALSE avant l'appel à EXECUTE_QUERY est à TRUE juste après.

    Comment localiser l'intruction qui déclenche ce changement de FORM_FAILURE ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    si execute_query générer une erreur tu passes en failure non ?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Citation Envoyé par Fred_D
    si execute_query générer une erreur tu passes en failure non ?
    Je suis tout-à-fait d'accord Fred mais je ne sais pas comment procéder pour connaître le trigger, la procédure interne, etc. invoqué par EXECUTE_QUERY et qui provoquerait cette failure.

    J'ai essayé en débug de positionner un point d'arrêt sur EXECUTE_QUERY et de faire un 'step into (F7)', mais je suis resté dans mon trigger KEY-NXTBLOK.

    Comment puis-je faire pour savoir si cette failure est généré par EXECUTE_QUERY dans ce traitement interne ou par un bout de mon écran ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    J'apporte des infos supplémentaires des fois qu'une personne ait une idée (géniale) :
    - j'ai vérifié que chaque item base table du bloc MS ait le même type de données et la même précision qu'en base : OK
    - j'ai créé un trigger dans ce bloc (MS) PRE-QUERY qui est bien invoqué après l'appel à EXECUTE_QUERY. Dans ce trigger form_failure vaut encore FALSE.

    Remarques :
    - juste après l'appel à EXECUTE_QUERY, la variable système :SYSTEM.LAST_QUERY vaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT ROWID,T84_LIEUMS,T85_AIREMS,ES_NUM,ES_NIV,OF2_CUMPREL,
    OF2_QTPREL,OF2_PAMP,OF2_ACTI,OF_NUM,OF_COMP,T81_FAM,MS_CODE,
    T62_ECART
    FROM B4102
    WHERE b4102.of_num = 'F1600316'
    and b4102.of2_acti = '0'
    and nvl(b4102.of_comp,0) in (-1,0)
    and nvl(b4102.of2_qtprel,0) <> 0
    and nvl(b4102.of2_qtprel,0) > nvl(b4102.of2_cumprel,0)
    FOR UPDATE OF T84_LIEUMS
    Exécutée sous SQLPlus, cette requête ne ramène aucune données (c'est le comportement attendu) et ce qui justifie que je ne passe dans le trigger de ce bloc POST-QUERY.

    Cela vous donne-t'il des idées parce que je fouille sur Metalink mais je suis VRAIMENT à court d'explications plosibles ?

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    et si t'affiche la dernière erreur Oracle dans l'écran ?

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Salut Fred et merci de t'intéresser à mon problème
    Citation Envoyé par Fred_D
    et si t'affiche la dernière erreur Oracle dans l'écran ?
    Habituellement, quand j'appuie sur la touche F6 et qu'une fenêtre s'ouvre cela signifie qu'une requête de sélection, d'insertion ou de mise à jour sur un bloc a échoué.
    Là en l'occurence quand j'appuie sur F6, aucune fenêtre ne s'affiche.
    J'en déduis que l'origine du form_failure est du à du code utilisateur proprement dit.

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

Discussions similaires

  1. Qui déclenche un trigger?
    Par p3kk4 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 05/10/2007, 09h44
  2. Réponses: 6
    Dernier message: 09/08/2007, 16h20
  3. action qui déclenche plusieurs actions
    Par imane_bennouna dans le forum Struts 1
    Réponses: 6
    Dernier message: 08/08/2006, 15h48
  4. Réponses: 2
    Dernier message: 14/06/2006, 15h04
  5. Réponses: 5
    Dernier message: 26/09/2005, 15h36

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