IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

[forms9i] connaitre les colonnes modifiées


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 193
    Par défaut [forms9i] connaitre les colonnes modifiées
    bonjour,

    je suis sous Oracle 9i et Forms 9i. J'ai un écran forms avec 15 champs basées. je souhaite savoir comment pourrais-jefaire pour savoir quelles sont les colonnes qui ont été modifiée au cours d'une opération de MAJ et garder leur anciennes valeurs dans une table de trace.

    Merci pour un début de piste

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Le mieux est de créer un déclencheur dans la base de données qui va s'exécuter à la modification de la rangée. Tu fais ensuite référence à :old.<nom_colonne> pour connaitre la valeur avant le changement.

    Pour connaitre les colonnes modifiées, tu compares :new.<nom_colonne> avec :old.<nom_colonne>.

    L'option, côté client, est d'utiliser get_item_property('bloc.item', database_value).

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 193
    Par défaut
    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    declare
    new_value varchar2(30);
    old_value varchar2(30):=get_item_property(:SYSTEM.CURRENT_ITEM, database_value);
    begin
    new_value:=name_in(:SYSTEM.TRIGGER_ITEM);
     if old_value<> new_value then
    :descrip:='colonne '||:SYSTEM.CURRENT_ITEM||' est passée de  '||old_value||' à '||new_value;
    insert into    operations(prefixe_operation,date_operation,utilisateur)
    		values (:descrip,sysdate,user);
    		commit;
    		end if;
    	end;
    Bon mon souci : il dit tout le temps que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     l'argument 1 de la Poocédure NAME_IN doit etre renseigné
    Pouvez vous m'aider

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Essayez ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new_value:=name_in('SYSTEM.TRIGGER_ITEM');
    Mais je pense que la solution que l'on vous proposait était de gérer cela avec des triggers sur la table, et non dans la forme.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 193
    Par défaut
    d'accord mais est ce que je peux voir a quoi ressemble le code si j veux le géré coté base de données

    merci

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Quelque chose comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CREATE OR REPLACE TRIGGER TRG_AU_EMP
       AFTER UPDATE -- apres mise a jour
       ON TABLE1     -- sur la table EMP
       FOR EACH ROW  -- pour chaque ligne
    Begin
       -- Insertion dans la table mouchard --
       Insert into TABLE2 ( .... )
       Values
       (
          :OLD.EMPNO
         ,:OLD.ENAME
         ,...
       );
    End ;
    /

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Query SQL sans connaitre les noms de colonnes
    Par lem01 dans le forum JDBC
    Réponses: 9
    Dernier message: 12/07/2007, 15h55
  2. les colonnes de la zone de liste modifiable
    Par Massdiop dans le forum IHM
    Réponses: 2
    Dernier message: 31/05/2007, 07h41
  3. Connaitre les colonnes visibles de ma JTable à l'écran
    Par jdewalqu dans le forum Composants
    Réponses: 2
    Dernier message: 20/04/2007, 09h07
  4. Réponses: 3
    Dernier message: 02/10/2006, 19h33
  5. [SQL SERVER 2005] Connaitre les données modifiées.
    Par abrial dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/09/2006, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo