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 24/09/2007, 18h27   #1
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Par défaut [6i] détecter le changement d'une checkbox non base table

Salut tout le monde,

Je travaille sur forms6i avec Oracle Application 11.5.7
Dans un écran, j'ai une case à cocher qui est non base table et qui peut prendre 2 valeurs :
- 'Y' = cochée
- 'N' = non cochée
Pour toutes les autres valeurs, cette checkbox doit être non cochée.

A ma grande surprise, le trigger WHEN-CHECKBOX-CHANGED n'est jamais déclenché lorsque je clique sur cette case (que la case soit initialement cochée ou pas).

J'ai néanmoins découvert que le trigger WHEN-VALIDATE-ITEM semblait s'activer lors de chaque clic.

Pourriez-vous :
1/ m'expliquer pourquoi :SYSTEM.RECORD_STATUS = 'QUERY' et non 'CHANGED' après que j'ai cliqué sur cette case à cocher ?
2/ me confirmer que mon alternative est la bonne (i.e. elle n'a pas d'effet de bord dont je ne me serai pas rendu compte jusqu'à maintenant) ?

Merci d'avance.
__________________
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
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2007, 19h00   #2
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut Magnus,

J'ai fait un test est ça fonctionne bien pour le déclenchement du trigger
WHEN-CHECKBOX-CHANGED

Tu peux poster le contenu de ton trigger when-validate-tem?


Il y a pas une instruction raise_application_error ou tu traites une exception dans ton when-validate-tem?

Code :
1
2
3
 
m'expliquer pourquoi :SYSTEM.RECORD_STATUS = 'QUERY' et non 'CHANGED' 
après que j'ai cliqué sur cette case à cocher
J'ai fait un test, le record ne change pas de statut, peut être à cause que
l'item c'est un unbound ( non basé), il n'a pas besoin de sauvegarder les chamgement ????
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2007, 09h30   #3
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Salut Magnus,

Surprenant ton problème. As-tu essayé de supprimer ta case à cocher et de la recrééer ? Quelle est la valeur de la propriété "Execution hierarchie" de ton trigger WCC ?
__________________
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.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2007, 18h11   #4
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Bonjour à vous 2,

D'après ma maigre expérience de forms (cela fait 2 ans que je développe avec forms 6i et 10g), cela pourrait venir de Oracle Applications mais je crois être un des rares utilisateurs de ce forum à utiliser cet ERP (?).

Salim>> j'ai créé cette case à cocher et le code que j'ai mis dans le trigger WVI est exactement le même que celui que j'avais mis dans le trigger WCC :
Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- ONDE G2R11
UPDATE ar_customer_profiles
   SET credit_checking = :sfp_caid_infos_adm_erd_v1.credit_checking
 WHERE customer_profile_id =
          (SELECT ac.customer_profile_id
             FROM ra_addresses ra,
                  ra_site_uses rs,
                  sfp_distributeur sd,
                  ar_customer_profiles ac
            WHERE sd.ra_customer_id = ra.customer_id
              AND rs.address_id = ra.address_id
              AND rs.site_use_code = 'BILL_TO'
              AND rs.primary_flag = 'Y'
              AND rs.STATUS = 'A'
              AND ac.customer_id = ra.customer_id
              AND rs.site_use_id = ac.site_use_id
              AND sd.distrib_ref = :sfp_caid_infos_erd_v.code_erd);
Je précise aussi que je n'ai effectué mes manipulations avec soit l'un de ces 2 triggers soit l'autre mais jamais les 2 en même temps.

plaineR>>Hum... j'imagine que la propriété que tu me demandes de regarder est "Ordre d'exécution" - tu dois avoir forms en Anglais - et elle vaut "Substitué".
Je vais essayer de recréer cette checkbox mais le problème demeurera quand bien même le trigger WCC se déclencherait "correctement" car lorsque je clique sur valider cela affiche qu'il n'y a pas de modificaions à sauvegarder.

Ce message est partiellement vrai : aucune donnée base table n'a été modifié dans mon scénario simplifié mais d'un autre côté, j'ai modifié des données en base.

Bref surprenant et je ne me rappelle pas avoir rencontré ce genre de problème que je n'étais pas sous Oracle Appli.

Thanks buddies.
__________________
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
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2007, 18h23   #5
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

peut être le code qui provoque une exception ???
Essaie de le mettre en commentaire.


La subquery ramène un ou plusieurs enregistrements????
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
(SELECT ac.customer_profile_id
             FROM ra_addresses ra,
                  ra_site_uses rs,
                  sfp_distributeur sd,
                  ar_customer_profiles ac
            WHERE sd.ra_customer_id = ra.customer_id
              AND rs.address_id = ra.address_id
              AND rs.site_use_code = 'BILL_TO'
              AND rs.primary_flag = 'Y'
              AND rs.STATUS = 'A'
              AND ac.customer_id = ra.customer_id
              AND rs.site_use_id = ac.site_use_id
              AND sd.distrib_ref = :sfp_caid_infos_erd_v.code_erd);
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 09h39   #6
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Citation:
Envoyé par Magnus Voir le message
Je vais essayer de recréer cette checkbox mais le problème demeurera quand bien même le trigger WCC se déclencherait "correctement" car lorsque je clique sur valider cela affiche qu'il n'y a pas de modificaions à sauvegarder.
Il t'affiche aucune modifications à enregistrer ce qui est logique puisque tu n'as pas modifié d'item basé, mais cela ne veut pas dire que ton update n'est pas pris en compte. Si tu veux qu'il ne t'affiche pas ce message, modifie le system.message_level ou fait un set_record_property (..., record_status, changed_status). Dans ce dernier cas il considèrera que ton enregistrement a été modifié.
__________________
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.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 10h55   #7
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Citation:
Envoyé par plaineR Voir le message
Il t'affiche aucune modifications à enregistrer ce qui est logique puisque tu n'as pas modifié d'item basé, mais cela ne veut pas dire que ton update n'est pas pris en compte. Si tu veux qu'il ne t'affiche pas ce message, modifie le system.message_level ou fait un set_record_property (..., record_status, changed_status). Dans ce dernier cas il considèrera que ton enregistrement a été modifié.
On est tout à fait d'accord sur le raisonnement.
Concernant la solution, j'avais déjà essayé le SET_RECORD_PROPERTY mais il engendre un problème d'acquisition de verrou ou autre bizarrerie dans le genre.
L'alternative que j'ai trouvé pour qu'il ne m'affiche pas dans ce message est de modifier le trigger ON-ERROR :
Code SQL :
1
2
3
4
5
6
 
IF ERROR_TYPE <> 'FRM'
OR ERROR_CODE <> 40401
THEN
	APP_STANDARD.EVENT('ON-ERROR');
END IF;

Je n'aime pas trop ce bricolage mais bon j'ai une solution alors je marque le topic 'Résolu' mais si l'un(e) d'entre vous a une explication sur le fait que le trigger WCC ne fonctionne pas dans ce contexte alors je suis preneur.

Merci à vous 2.
__________________
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
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h02.


 
 
 
 
Partenaires

Hébergement Web