|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
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 :
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. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
si execute_query générer une erreur tu passes en failure non ?
|
|
|
00
|
|
|
#3 | |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Citation:
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 ? |
|
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
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 :
Cela vous donne-t'il des idées parce que je fouille sur Metalink mais je suis VRAIMENT à court d'explications plosibles ? |
||
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
et si t'affiche la dernière erreur Oracle dans l'écran ?
|
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Salut Fred et merci de t'intéresser à mon problème
Citation:
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. |
|
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
N'est-ce pas simplement la clause FOR_UPDATE qui échoue car tous les enregistrements ne peuvent être verrouillés ?
et si vous retirez cette clause ?
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#8 | |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Extrait de la doc:
Citation:
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Salut et merci de ta réponse SheikYerbouti
Citation:
- en supprimant ALL_RECORDS : idem - en supprimant FOR_UPDATE : idem - en supprimant les 2 : idem Citation:
PS : actuellement, je suis en train de positionner des points d'arrêt partout dans les triggers niveau bloc et niveau item en m'appuyant sur le schéma des appels suivant : http://sheikyerbouti.developpez.com/...g/?page=Chap53 Conclusion : une fois EXECUTE_QUERY invoqué, on passe uniquement dans le trigger PRE-QUERY. POST-QUERY n'est pas invoqué car aucune donnée n'est récupérée et enfin, les triggers niveau item de ce bloc WNII ne sont appelés qu'après le retour à la procédure appelante (celle qui invoque EXECUTE_QUERY). Très sincèrement, j'en perds mon latin et je ne vois plus quel mot clé entrer sous Metalink |
||
|
|
00
|
|
|
#10 | |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Citation:
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Citation:
Cependant, d'après la doc, form_failure représente l'état de la dernière instruction exécutée ; en l'occurence EXECUTE_QUERY. Par conséquent, je ne sais pas trop quoi penser de la notion de failure vis-à-vis du fait que la requête n'a récupéré aucune donnée... En cas de doute, je considère que l'explication vient de là. Merci beaucoup. |
|
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
EXECUTE_QUERY, c'est comme COMMIT, cela engage en fait toute une suite d'autres actions (comme ON-SELECT, ON-FETCH, WHEN-NEW-ITEM-INSTANCE, POST-QUERY, etc...)
donc le statut FORM_FAILURE est effectivement difficile à cibler !
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Oui je suis d'accord et ils pourraient le mentionner dans la doc.
Que ce soit pour form_success ou form_failure je trouve que les notions de "succès" et d'"échec" sont floues lorsque la récupération de données s'est déroulée correctement (i.e. pas d'anomalie, exception ou autre) mais qu'il n'existe aucune ligne associée dans la table visée. Dans tous les cas, j'utiliserai maintenant cette routine avec modération. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com