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/01/2007, 10h24   #1
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
Par défaut [Forms]forms et ses transactions

Bonjour,

Lors du chargement d'un bloc, forms ouvre une transaction. Est-il possible possible de lancer d'autres requêtes dans cette même transaction ?
Concrètement, j'ai besoin de récupérer les données de mon bloc ouvert, juste avant le commit, et je préférerais les chercher en base plutôt que de parcourir le bloc.

(forms6i, oracle9i)

merci
chrifo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h29   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Les données contenues dans le bloc ne sont répercutées dans la base que suite à une instruction Post ou commit. (il n'y a pas de magie !)
sans post ni commuit, vous ne lirez dans la base que les données non modifiées.
__________________
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/01/2007, 11h17   #3
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
Merci pour votre réponse.

Pour mieux m'expliquer, voilà une synthèse de mes traces :
--> DEBUT KEY-COMMIT
--> lancement du Trigger After Update (de la table)
--> sélection 1 : les enregistrements affichés ne sont pas ceux du bloc
--> FIN KEY-COMMIT
--> sélection 2 : les enregistrements sont ceux du bloc

Lors de la sélection 1, le trigger after update s'est lancé, les données sont donc bien modifiées en base, sans être "commitées".
Ce que je veux c'est récupérer ces données non commitées, d'où ma volontée de lancer la requête (depuis forms bien sûr) dans la même transaction que celle du bloc, c'est possible ?
Je suis peut-être en train de me torturer pour rien ...
chrifo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 11h24   #4
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Non, je ne comprend pas votre problématique.
le trigger before/after update ne peut se déclencher que sur un commit ou un post. Donc les données sont non commitées que pendant le très court laps de temps entre l'update et le commit.
quelle différence y a t-il dans les données entre l'ordre update et le commit ?
__________________
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/01/2007, 11h33   #5
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
Dans le KEY-COMMIT, je fais un appel de procedure avec toutes les valeurs du bloc.
Pouvoir récupérer ces valeurs en base, non encore commitées, me permettrait de passer la boucle sur un parcours de curseur à la place d'un parcours du bloc.
Actuellement mon curseur me renvoie les valeurs non encore mises à jour, ce qui ne m'intéresse pas. Techniquement il me parait envisageable de passer la requête dans la même transaction que le bloc, mais je ne vois pas comment.
chrifo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 11h42   #6
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Ok, il faudrait lire la table dans le trigger POST-FORM-COMMIT dans ce cas.
__________________
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/01/2007, 11h53   #7
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
Oui mais là c'est trop tard : le commit est terminé
La procédure doit être lancée sur la base non commitée, avec les données du bloc en paramètres
chrifo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 12h08   #8
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Non, ce trigger se déclenche avant le commit en base.
Si vous voulez les données avant commit, interrogez les tables en première instruction du trigger key-commit
__________________
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/01/2007, 12h19   #9
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
Citation:
Envoyé par SheikYerbouti
Non, ce trigger se déclenche avant le commit en base.
Je viens de réessayer pour être sûr, je ne crois pas

Citation:
Envoyé par SheikYerbouti
Si vous voulez les données avant commit, interrogez les tables en première instruction du trigger key-commit
Je n'arrive toujours pas à retrouver mes données avant commit.

Je crois que je vais abandonner l'idée et continuer à parcourir le bloc, en tout cas merci pour votre aide.
chrifo 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 20h01.


 
 
 
 
Partenaires

Hébergement Web