Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/05/2011, 12h58   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 9
Points : 2
Points : 2
Par défaut Comment faire un clear_block sans incrément la sequence

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 :
1
2
3
4
GO_BLOCK('RESULTATS');
clear_block;
GO_BLOCK('RECHERCHE');
clear_block;
mon souci, c'est que, à chaque fois que je fait VIDER, le numéro de séquence du block basé est incrémenté.

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.
enissay_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 13h33   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 529
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 529
Points : 6 458
Points : 6 458
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
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 13h43   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 9
Points : 2
Points : 2
Citation:
Envoyé par SheikYerbouti Voir le message
Retirer la séquence de la valeur initiale de l'item, et la renseigner dans un trigger PRE-INSERT par exemple.
Je vais essayer tout de suite.

Merci beaucoup.
enissay_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 11h42   #4
Invité de passage
 
Inscription : novembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 9
Points : 2
Points : 2
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;
Et aussi, dans le bouton AJOUTER :

Code :
1
2
3
go_block('nom_block');
last_record;
create_record;
Et bien évidement dans l'evenement on-insert :

Code :
1
2
	INSERT INTO TABLE VALUES (:block.champ,
:block.champ1,:block.champ2,:block.champ3);

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.
enissay_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 11h50   #5
Invité de passage
 
Inscription : novembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 9
Points : 2
Points : 2
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.
enissay_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 14h18   #6
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 529
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 529
Points : 6 458
Points : 6 458
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
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 15h23   #7
Invité de passage
 
Inscription : novembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 9
Points : 2
Points : 2
Citation:
Envoyé par SheikYerbouti Voir le message
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 ?

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 :
1
2
3
4
5
6
7
CREATE sequence GFM.SEQ_CODE_AUTORISATION
  Increment BY 1
  MinValue     1
  MaxValue     100000
  NoCycle
  NoOrder
  Cache 20;
et le trigger de la séquence :

Code :
1
2
3
4
5
6
7
8
CREATE OR REPLACE TRIGGER GFM.SEQ_CODE_AUTORISATION
BEFORE INSERT ON GFM.AUTORISATIONS
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
begin SELECT SEQ_CODE_AUTORISATION.NEXTVAL INTO
:new.CODE_AUTORISATION FROM dual;
end;
/

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.
enissay_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 15h52   #8
Invité de passage
 
Inscription : novembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 9
Points : 2
Points : 2
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.
enissay_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 16h16   #9
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 529
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 529
Points : 6 458
Points : 6 458
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
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 19h17   #10
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
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
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 15h19   #11
Invité de passage
 
Inscription : novembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 9
Points : 2
Points : 2
Citation:
Envoyé par Garuda Voir le message
Le ON-INSERT, c'est mal !
Pour info, il existe le CLEAR_BLOCK(NO_VALIDATE) !
Merci pour la réponse,

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.
enissay_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 15h33   #12
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 529
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 529
Points : 6 458
Points : 6 458
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
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h41.


 
 
 
 
Partenaires

Hébergement Web