|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Bonjour,
Dans plusieurs écrans développés sous forms 10g, j'ai identifié des scénarios où l'exception FORM_TRIGGER_FAILURE est levée mais où l'exécution continue. J'ai constaté ce fait aussi bien à l'exécution, qu'en débug. Voici un exemple simplifié : KEY-COMMIT Code :
Code :
Les triggers sont alors déclenchés dans cet ordre : 1/ key-commit 2/ pre-insert A l'exécution, il s'affiche effectivement une boîte de dialogue stipulant "Erreur. Cet enregistrement existe déjà." MAIS le contrôle n'est pas immédiatement redonné à l'utilisateur : le reste du code s'exécute dont l'affichage de la boîte de dialogue "Modifications enregistrées avec succès." Malgré le test sur FORM_SUCCESS, l'exécution du code n'est pas stoppée par l'exception. Quelle explication voyez-vous à ce scénario ? Quelle solution permettrait de bloquer l'exécution du code dans ce cas ? Merci d'avance.
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Propager l'exception:
Code :
__________________
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
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Salut Sheikyerbouti,
J'ai déjà eu cette idée : j'ai modifié le trigger KEY-COMMIT de la sorte : Code :
Mes collègues affirment que c'est une anomalie de forms qui existait déjà lors de la version 6i avec le trigger KEY-COMMIT. Leur alternative est complexe donc je préfèrerai simplifier cette gestion. Une autre idée ?
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
||
|
|
00
|
|
|
#4 | |||||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
marche pô ta solution.
Bloc simple PRE INSERT Code :
Code :
Dans la doc sur le commit_form ils passent par la vérif du statut du bloc : Citation:
__________________
More Code : More Bugs. Less Code : Less Bugs |
|||||
|
|
00
|
|
|
#5 | |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Allez je rajoute une couche : Aide de forms toujours : FORM_SUCCESS
Citation:
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
C'est vrai que COMMIT_FORM génère trop d'instructions pour pouvoir tester le résultat de FORM_SUCCES ou FORM_FAILURE.
__________________
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
|
|
|
#7 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Honte à moi !
Effectivement McM. Mais alors quelle alternative pour détecter que KEY-COMMIT a déclenché le trigger PRE-INSERT qui a levé une FORM_TRIGGER_FAILURE ? Comment détecter un échec sans passer par une variable globale ou autre "astuce" qui risque de s'avérer bancale ? En tout cas, merci de me répondre les gars
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
C'est surprenant mais la vérification du bon déroulement d'un COMMIT passe par un test sur la variable système FORM_STATUS qui doit être égale à QUERY :
Code :
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com