GO_BLOCK dans WHEN_VALIDATE Déclencheur
Je travaille avec oracle forms. J'ai une procédure que j'ai pour exécuter chaque fois qu'un champ spécifique de la valeur est modifiée. La procédure que j'ai pour exécuter contient un go_block l'enseignement, qui ne peut pas être utilisé dans le when_validate_item déclencheur. Est-il de toute façon de contourner cela?
MODIFIER
- Je utiliser les when_validate_item, parce que la procédure que j'ai à exécuter doit être exécuté lorsque le champ est modifié, MAIS AVANT la validation est exécutée.
OriginalL'auteur Nacho321 | 2012-09-26
Vous devez vous connecter pour publier un commentaire.
Habituellement, il ya une restriction sur l'utilisation de
GO_BLOCK
ouGO_ITEM
sur unWHEN-VALIDATE-ITEM
. Cependant, il ya un couple de façons de surmonter cela. Une façon est d'utiliser unWHEN-TIMER-EXPIRED
déclencheur. Voici comment-WHEN-TIMER-EXPIRED
WHEN-VALIDATE-ITEM
Ce qui se passe est - Ce qui va créer & expirer le chronomètre dès que le
CREATE_TIMER
fonction est appelée et puis la forme déclencheur de niveauWHEN-TIMER-EXPIRED
vérifiera l'expiration de la minuterie nom et l'appeler de votre unité de programme qui a leGO_BLOCK
. Espérons que cette aide.Mise à JOUR
M. Jeffery Kemp voulais voir la preuve que cette solution fonctionne. Donc, ici, il est-
Un Oracle formulaire avec deux Blocs
BLOCK1
etBLOCK2
avec des éléments de texte sur elleW-V-I Déclencher
W-T-F Formulaire De Déclenchement. Cela appelle une UNITÉ de PROGRAMME
P_CALL_PROC
avecGO_BLOCK
appel de fonction en premier et ensuite fait un peu de validations sur le terrainNumber 2
.Ici est
P_CALL_PROC
Et voici le résultat-
Et
Ici est un lien Youtube pour voir la Forme dans l'action.
Eh bien, vous ne pouvez pas appeler
go_block
ou ungo_item
formes construit en fonction d'unWHEN-VALIDATE-ITEM
au niveau de l'élément déclencheur. Cette solution endroits de la procédure qui appelle à lago_block
à l'intérieur d'un déclencheur de niveau et que le niveau de forme de déclenchement est invoquée par leTIMER
fonction au niveau de l'élément déclencheur. Aussi, il pourrait y avoir une validation supplémentaire ou de traitement à l'intérieur de la procédure qui sera exécutée quand on l'appelle, ne sais pas si il y a un problème (j'ai utilisé ce dans de nombreuses formes et il fonctionne 😉 Donc, La solution fonctionne c'est pourquoi il a été marqué comme étant correcte.Merci de lire mon commentaire à nouveau. Juste parce qu'il s'exécute sans erreur ne signifie pas qu'elle n'en résout le problème comme indiqué - c'est à dire le désir d'exécuter du code AVANT la validation a été exécuté. Ce n'est pas une solution pour le cas des OP problème énoncé. Si son problème est son problème, bien sûr, est une autre question tout à fait.
Non, il y a une grande différence entre w-v-i défaut et w-t-f défaut. Si le w-v-i échoue, l'élément reste marquée comme "non valide". Si le w-t-f échoue, après le w-v-i a réussi, l'élément va être "valide", même si votre personnalisé procédure de validation a échoué. Oui, je suis d'accord c'est une solution de contournement, mais je fais remarquer un problème potentiel avec elle, surtout que la routine de validation fonctionne différemment si elle n'est pas appelée dans le contexte d'un w-v-i de déclenchement.
La preuve du pudding, c'est que même si votre w-t-f échoue, l'utilisateur sera en mesure d'enregistrer l'enregistrement (avec les valeurs non valides) - moins, vous pouvez ajouter du code supplémentaire ailleurs (par exemple, l'appel de la routine de validation à nouveau à partir de la pre-commit déclencher ou quelque chose comme ça).
OriginalL'auteur Annjawn
Vous pouvez essayer d'utiliser le POST-déclencheurs de CHANGEMENT.
"Après Changement de Déclenchement Juridique des Commandes SELECT, sans restriction de built-ins"
OriginalL'auteur Laggel
Quand j'ai été courir dans ce genre de problèmes d'habitude, j'ai été en mesure de résoudre le problème avec la réécriture et/ou modification de la forme elle-même. En d'autres termes pourquoi avez-vous besoin d'utiliser une procédure qui se déplace le focus à un autre poste avant la validation?
Pour être en mesure de contourner ce genre de problème, je doit vous recommandons de lire à travers les Formes de l'aide pour savoir ce qui déclenche avoir de problème avec restreint les builtins. Avec assez de connaissances sur la façon dont les formes de travail, vous devriez être en mesure de résoudre la plupart de ces types de problèmes. Dans les rares cas où je n'ai pas été en mesure de contourner le problème, j'ai utilisé la minuterie solution de contournement.
go_block
à l'intérieur d'unWHEN-VALIDATE-ITEM
, voulez-vous de re-conception de l'ensemble du formulaire, alors?J'ai travaillé avec l'héritage des formes qui à l'origine a été conçu dans les Formulaires 3 (certains dans les Formulaires 2) ce qui signifie que je sais que ce n'est pas une tâche facile. Ce que je voulais dire, c'est que si vous avez vraiment comprendre les besoins de l'entreprise et comment les formes de travail, alors vous pouvez contourner le problème restreint les builtins. Dans certains cas, cela peut ne pas être possible et puis, en dernier recours, vous pouvez utiliser la minuterie astuce pour contourner le problème.
OriginalL'auteur DJPeter