|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 9 ![]() |
Bonjour,
Merci d'avance à tous les experts. Oracle 10G. Forms 6i. J'ai un block non-basé (pour la recherche) et un 2ème block basé (TABLE RESULTATS). Quand je fait clic sur un bouton VIDER au niv. du block (RECHERCHE), afin de vider les items au niv. de recherche, et le clear_block (RESULTATS). Code :
Comment faire pour éviter l'incrémentation de la séquence, tout en vidant le block. J'espère fort que j'ai présenté assez simple. Sincèrement votre. MERCI. |
||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 529 ![]() |
Retirer la séquence de la valeur initiale de l'item, et la renseigner dans un trigger PRE-INSERT par exemple.
__________________
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 |
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 9 ![]() |
|
|
|
00
|
|
|
#4 | ||||
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 9 ![]() |
Je vous remercie de votre réponse.
Je vous confirme que ça a fonctionnée. En outre, j'ai une petite quetion, concernant la séquence toujours. C'est que, en mettant dans le pre-insert : Code :
SELECT seq_ref_champ.NEXTVAL INTO :block.champ FROM dual; Code :
Code :
C'est que, dans les enregistrements que j'enregistre au niv. de TABLE, les numéros de séquence sont incrémenté deux fois, càd : (1,text1,text1,text1) puis (3,text2,text2,text2) ensuite (5,text3,text3,text3). Alors sachant que, dans ma SEQ : j'ai personnalisé l'incrémentation by 1. Merci infiniment. |
||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 9 ![]() |
bonjour,
Je rajoute que, même en changeant le code du pre-insert, et en le mettant dans le code du bouton AJOUTER après le create_record, ben, ça donne la même chose, càd : l'incrémantion de la séquence est faite, en deux fois. MERCI. |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 529 ![]() |
Il doit y avoir autre chose qui incrémenta cette séquence.
Sinon, pourquoi un trigger ON-INSERT ? pourquoi ne pas laisser Forms faire le boulot ?
__________________
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 | |||||
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 9 ![]() |
Citation:
Je suis entièrement d'accord avec vous(sur le on-insert), sachant que j'eesaye de présenter le souci sous un petit exemple, alors, dans le on-insert, je dois absolument faire exécuter des tests à l'avance en gérat les messages de forms. Mais, je reviens au sujet, c'est j'ai essayé même de créer un nouveau module, contenant un seul block de données basé, en intégrant le nextval de la séquence dans le pre-insert seulement (pas de on-insert), et que, j'en ai toujours la sequence incrémentée par 2. Donc, logiquement, le souci est dans la séquence utilisée pour générer le numéro !! (je crois). Du fait, voilà le sql de la séquence : Code :
Code :
En outre, on ré-exécutant le formulaire aprés avoir supprimer le trigger de la séquence, ça marche mnt. Alors, à quoi sert les triggers crées sur la BDD ? du fait, que je viens de trouver qu'il y a pour chaque séquence d'une table, un trigger portant le même nom. Merci mille et une fois pour votre soutien et aide. |
|||||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 9 ![]() |
Merci chef,
C'est résolu en supprimant tous les triggers, qui fesait l'incrémentation de la séquence en plus+1 de la séquence. alors dois-je enlever les on-insert et sinon, quel est le l'avantage de les garder dans la cas contraire. Merci. |
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 529 ![]() |
Lorsque le bloc est basé, Forms gère automatiquement la mise à jour de la base (Insert,Update,Delete).
Le ON-INSERT sert à contourner le comportement par défaut afin d'exécuter un traitement de remplacement. Il est très rarement utilisé.
__________________
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
|
|
|
#10 |
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
Le ON-INSERT, c'est mal !
![]() Pour info, il existe le CLEAR_BLOCK(NO_VALIDATE) !
__________________
Garuda गरूड Brahmâ la Guerre et Vishnu la Paix Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010 |
|
|
00
|
|
|
#11 | |
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 9 ![]() |
Citation:
Je rappel que le but est de vider deux blocks (un basé et l'autre ne l'est pas) mais, le clear_block(no_validate), incrémente la séquence meme. donc, du fait, j'ai opté pour la solution de rensigner la sequence on pre-insert. En outre, le on-insert, je l'ai utilisé pour vérifier sur autres tables et si c'est valide, j'enregistre sur la table et en meme temps sur la table du block basé. Sinon, si la condition n'est pas vérifiée, ben, j'annule le insert de la table du block basé... Merci. |
|
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 529 ![]() |
Les diverses opération sur d'autres tables peuvent également se faire dans les triggers PRE-INSERT et POST-INSERT.
__________________
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
|
Copyright © 2000-2012 - www.developpez.com