|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() Inscription : février 2004 Messages : 450 ![]() |
Bjr,
J'ai un comportement bizard avec Forms 4.5 et une BD 10gR2 que je n'ai pas avec une BD 7.3.4. D'ailleurs, je ne l'ai pas non plus avec Forms 10gR2 et une BD 10gR2 ! Lorsque j'insère une ligne dans un bloc et que je committe, puis que je la modifie juste après, j'obtiens ce message d'erreur ? S'auriez-vous pourquoi cette erreur se produit et comment la contourner ? D'avance merci de votre aide . |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : février 2004 Messages : 450 ![]() |
Après quelques tests en live dans le doute, j'ai fait l'essai suivant :
Interogation de la base via le bloc de ma form, modifications successives de ma ligne avec commit après chaque modification. Dans ce cas, je n'obtiens pas l'erreur, donc j'en ai déduit qu'elle se manifeste que lorsque j'insère une ligne et que la modifie juste après. Bien, sauf que j'ai toujours l'erreur suite à l'insert ! Vos précieuses suggestions m'aideraient beaucoup . |
|
|
00
|
|
|
#3 | |
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
FYI
Citation:
|
|
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : février 2004 Messages : 450 ![]() |
Merci pour la note, mais cependant, ce n'est pas tout à fait le cas que je rencontre !
Càd qu'il n'y a personne d'autre que moi-même qui verrouile et modifie la ligne dans la base. Donc, il s'agit d'un autre cas dans lequel la modification après l'insert ne se fait pas correctement. A croire que : SELECT * FROM table WHERE col1=:col1 AND col2=:col2 AND col3=:col3 AND ROWID='xxxxxxxx.xxxx.xxxx' FOR UPDATE NOWAIT; après un insert suivi d'un commit et d'une modification de la ligne dans le bloc ne permet pas le verrouillage de la ligne ???? La même transaction, avec la même form compilée, attaquant une base 7.3.4 ne pose aucun problème ! Vos lanternes me seraient d'un grand secours . |
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() Inscription : février 2004 Messages : 450 ![]() |
Question complémentaire :
Pourriez-vous m'expliquer comment, après une insertion d'une ligne dans un bloc et une consolidation dans la BD, Forms procède pour récupérer le ROWID de la ligne tout juste insérée qui lui sert en suite pour verrouiller la ligne lorsqu'une modification d'un item est effectué juste après ? Merci d'avance pour vos réponses . |
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
4YI
Citation:
Citation:
|
||
|
|
00
|
|
|
#7 |
|
Membre éprouvé
![]() Inscription : février 2004 Messages : 450 ![]() |
Merci Taska pour la réponse, mais elle ne répond pas vraiment à la question.
Ta réponse me permet de connaitre le ROWID de la ligne mais pas de savoir comment Forms procède pour l'obtenir ni à quel moment il le valorise. Peut être une explication à ce niveau m'aiderait à comprendre le problème que je rencontre. . |
|
|
00
|
|
|
#8 |
|
Membre actif
![]() Inscription : décembre 2005 Messages : 138 ![]() |
Est-ce que tu as un trigger qui alimente une séquence ou un trigger qui alimente un champ basé de ton form, dans la bd?
La raison est bien simple, c'est qu'après un commit, Forms considère que tous les verrous sont relachés et avec raison. Pour refaire un verrou (lorsque tu saisis le premier caractère dans un champ après avoir sauvegardé) la première chose que forms va faire est d'exécuter le trigger on-lock et essayer de verrouiller la ligne que tu modifies. Pour ce faire, forms procède un peu de la sorte : select 1 from ta_table where champ_base1 = :1 and champ_base2 = :2 ... and champ_basen = :n and champ_pk = for update nowait; Donc, si je résume en francais, trouve et verrouille l'occurence correspondante à la clé primaire que je te fournis et par le fait même, vérifie si cette occurence est encore EXACTEMENT pareille à quand j'ai fais le fetch (ou le commit, dans le cas d'un insertion). Si tu as inséré une ligne à 10 champs, dont 1 null (mais qui est alimenté par un trigger de table), tu te ramasses avec une condition telle que champ_base6 = null, ce qui est toujours faux. |
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : décembre 2005 Messages : 138 ![]() |
|
|
|
00
|
|
|
#10 | |
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
Citation:
Oracle 10G n'est pas supportée par Forms 6i ! Alors Forms 4.5 !!! A ta place, je laisserais tomber (ou passerais à une version plus récente !)
__________________
Garuda गरूड Brahmâ la Guerre et Vishnu la Paix Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010 |
|
|
|
00
|
|
|
#11 |
|
Futur Membre du Club
![]() Chris RakotovaoIngénieur développement logiciels Inscription : mai 2008 Messages : 17 ![]() |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com