[forms 10g] FORM_TRIGGER_FAILURE non bloquant
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:
1 2 3 4 5 6 7
|
COMMIT;
IF FORM_SUCCESS THEN
MSG_BOX('Modifications enregistrées avec succès.');
CLEAR_FORM(NO_VALIDATE);
...
END IF; |
PRE-INSERT
Code:
1 2 3 4 5 6
|
IF NOT CHECK_UNIQUE('PR0200', 'CH_NOM', :PR0200.CH_NOM,
'CH_MILL', :PR0200.CH_MILL) THEN
MSG_BOX('Erreur. Cet enregistrement existe déjà.');
RAISE FORM_TRIGGER_FAILURE;
END IF; |
Scénario : créer un enregistrement non unique et valider.
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.