|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Bonjour,
Je développe des écrans sous forms 10g pour lesquels je souhaite faire des contrôles en TEMPS REEL ; par exemple, faire des contrôles de dispo, etc. Malheureusement, à l'exécution, j'obtiens souvent ce message d'erreur : Citation:
Cependant, même en utilisant le déboggueur, je n'arrive pas à déterminer précisément l'origine de ce message d'erreur. Ce message d'erreur n'est plus généré si je supprime toutes les invocations de la méthode POST. L'ennui est que sans appel à POST, comment valider temporairement les changements apportés par l'utilisateur : ajout, modification ou suppression d'enregistrements ? Par conséquent, sans cette méthode, mon contrôle de dispo ne tient pas compte des modifications apportées depuis la dernière validation en base par COMMIT. J'aimerais donc que l'on m'explique : - ce qui génère ce message d'erreur - comment travailler en temps réel avec ou sans la méthode POST mais sans ce message d'erreur intempestif. Merci d'avance aux âmes charitables (et un minimum expérimentées).
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Hello Magnus,
As-tu un trigger sur la table que tu fais un post ?
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
00
|
|
|
#3 | |||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Tu peux savoir ce que je suis content de te voir plaineR
Citation:
- KEY-DELREC - KEY-DOWN - KEY-MENU - KEY-NXTBLK - KEY-PRVBLK - KEY-UP - POST-QUERY - WHEN-MOUSE-CLICK - WHEN-NEW-RECORD-INSTANCE -- invocation de POST - WHEN-VALIDATE-RECORD -- contrôle du dispo par exemple Des fois que ça serve, voici le code WHEN-NEW-RECORD-INSTANCE : Code :
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
as tu regardé du côte de ceci:
Select for Update ... http://www.techonthenet.com/oracle/c...for_update.php CDLT. |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Salut taska et merci de t'intéresser à cette discussion,
Je connais SELECT FOR UPDATE et WHERE CURRENT OF mais ils ne peuvent pas être appliqués dans ce contexte car les données modifiées sont des items base table. Ex (simplifié) : supposons la table suivante : Code :
1/ lancement de l'écran 2/ query de tous les records 3/ modification du salaire du record dont id_employe = 12 de 2000 à 3000 4/ déplacement dans un autre record, ce qui implique l'invocation de POST grâce au trigger WHEN-NEW-RECORD-INSTANCE 5/ retour sur le record dont id_employe vaut 12 et modification du salaire de 3000 à 2500 6/ tentative de déplacement sur un autre record, donc invocation du trigger WHEN-NEW-RECORD-INSTANCE donc de POST FRM-40654Mon explication : lors de l'invocation du 2ème POST, la valeur de la colonne SALAIRE du record dont id_employe = 12 est : - en base, 2000 - dans la session, 3000 - à l'écran, 2500 Par conséquent, forms ne peut décider à quelle valeur il doit positionner la colonne de ce record : 3000 ou 2500 ?
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
||
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 349 ![]() |
et passer par un bloc basé sur une procédure stockée ne te donnerais pas plus de flexibilité quand à la partie transactionelle ?
CDLT. |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Je n'ai pas été clair, je parlais de trigger basé
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
@plaineR :
Code :
@taska : ça me paraît bien compliqué pour mettre en place un traitement aussi "banal". En effet, je voudrais SIMPLEMENT que lorsque l'utilisateur quitte un enregistrement, automatiquement toutes les modifications soient validées en base. Malheureusement, l'utilisation de POST dans un trigger WVR n'est pas possible et apparemment, modifier un enregistrement qui a été posté soulève une FRM-40654 Je vais vous justifier mon besoin : si j'ouvre une session SQLPlus et que je fais des manipulations DML (INSERT / UPDATE / DELETE) alors tant que je n'ai pas validé mes modifications elles n'ont pas de portée pour les autres sessions, mais durant MA session : - je ne rencontre pas de message de conflit - toutes les manipulations tiennent compte des précédentes La mise en place d'une telle fonctionnalité sous forms est loin d'être aussi évidente.
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
OK, as-tu essayé de mettre la propriété de bloc "DML Returning value" à true ?
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
C'est une des solutions qu'ils préconisent sur metalink mais je l'avais temporairement écartée car je ne comprends pas cette propriété.
Et effectivement, ça a l'air de marcher Je vais approfondir mes tests cet après-midi histoire de vérifier que mon besoin est satisfait. Cependant, je t'avoue que j'ai du mal à comprendre ce que fait cette propriété surtout dans ce contexte (ie j'ai conservé les instructions POST). Tu peux m'en dire plus ? L'as-tu déjà expérimentée ? Dans tous les cas, merci plaineR de me dépanner aussi rapidement et efficacement (même pas une ligne de code).
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
DML returning value, permet de relire entièrement le record et de le ré-afficher dans le bloc. Cela permet par exemple de voir certains champs mis à jour ailleurs que depuis Forms (cas d'un champ mis à jour par un trigger basé, 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
|
|
|
#12 | |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Je l'utilise régulièrement quand j'ai des triggers qui modifient des colonnes d'un bloc que je suis en train de mettre à jour (=> d'où l'erreur "Record has been updated..."). Cette propriété permet de récupérer les valeurs mises à jour par le trigger et évite d'avoir à raffraichir l'affichage.
Ne pensant pas pouvoir être plus précis que SheikYerbouti : Citation:
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
|
00
|
|
|
#13 | |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Je n'ai plus ce message d'erreur.
Vous êtes tout simplement magiques ! Ceci dit, j'ai encore 2 questions : - dans la doc, à propos de cette propriété, il existe cette restriction : Citation:
- ai-je encore besoin de l'instruction POST dans le trigger WNRI (notamment) ?
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Citation:
Citation:
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
||
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Ok. Je vais faire quelques tests.
Merci plaineR
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com