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 :

[FORMS6] : mise à jour d'une vue


Sujet :

Forms Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut [FORMS6] : mise à jour d'une vue
    Bonjour à tous,

    Voila j'ai un problème sur une vue , voici le script de ma vue :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    drop view cdt_pointage;
     
    create view cdt_pointage as select
     num
    ,cde
    ,liv
    ,lieuc
    ,bapt
    ,id_contenant
    ,qte
    ,etitrac
    ,env_transp_int
    ,recu_transp_int
    ,date_recep
    ,num_trajet
    ,lib_trajet
    ,code_chauf
    ,lib_chauf
    ,ctr_exp
    ,ed_etiquette
    from cdt
    where nvl(ed_etiquette,'N') = 'O';
     
    drop public synonym cdt_pointage;
    create public synonym cdt_pointage for ops$projet.cdt_pointage;
    grant all on cdt_pointage to minier;
    Comme vous pouvez le voir dans le script, il y a pas de jointure dans cette vue, c'est une vue simple.

    Si je fais un update en ligne de code à la main sur cette vue, pas de souci.
    Par contre si je veux faire une mise à jour à travers de forms 6i (Version 6.0.8.19.2), il ne donne l'erreur suivante :
    FRM-40602 : Cannot insert or update data in a view
    J'ai recompilé la table CDT qui est utilisée dans la vue.

    Si je change de vue tout va bien.

    Quelque a t il une idée ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    voici le script de la table qui est utilisé dans la vue décrite dans le message précédent :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    create table cdt (
     num                    int not null
    ,cde                    int not null
    ,liv                    int not null
    ,lieuc                  varchar2(5) not null
    ,bapt                   varchar2(3) not null
    ,id_contenant           int not null
    ,env_transp_int         varchar2(1)
    ,recu_transp_int        varchar2(1)
    ,ctr_exp                varchar2(1)
    ,selection              varchar2(1)
    ,date_recep             date
    ,code_chauf             varchar2(5)
    ,lib_chauf              varchar2(50)
    ,num_trajet             number
    ,lib_trajet             varchar2(50)
    ,qte                    number
    ,incomplet              varchar2(1)
    ,pret_tint              varchar2(1)
    ,etitrac                varchar2(1)
    ,ed_etiquette           varchar2(1)
    )
    tablespace tracabilite
            storage (initial 1M next 500K pctincrease 0);
     
    drop public synonym cdt;
    create public synonym cdt for ops$projet.cdt;
    grant all on cdt to minier;
     
    drop index k_cdt;
    create index k_cdt on cdt(num) tablespace clindex
            storage (initial 200K next 200K pctincrease 0);
     
    drop index k2_cdt;
    create index k2_cdt on cdt(cde,liv) tablespace clindex
            storage (initial 200K next 200K pctincrease 0);
     
    rem MODIF : 05-2004 : GE : AJOUT D'UNE CONTRAINTE INTEGRITE
    alter table cdt drop constraint k_cdt4;
    alter table cdt add constraint k_cdt4
            primary key (cde,liv,lieuc,bapt,id_contenant)
            using index tablespace clindex
            storage (initial 200K next 200K pctincrease 0);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    Salut,

    De toutes facon, si tu arrive à faire un update avec SQL*Plus ou ton outil favori, c'est que ta table et ta vue sont bien montées. A mon avis tu devrais plutot regarder du coté de ta forms pour trouver le pb.
    Comment c'est fait ? Un block basé sur la vue ?
    "There are two major products that come out of Berkeley: LSD and UNIX.
    We don't believe this to be a coincidence."
    - Jeremy S. Anderson

    La FAQ Python
    Les cours et tutoriels pour apprendre Python
    Le Forum Python

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Je refais le même script de la vue mais avec un autre nom : toto et là update sur FORMS se passe bien.

    Je me demande si ma vue n'est pas créée deux fois sous des users différents . Je ne me souviens plus de la table système qui référence les vues et les créateurs.

    MERCI

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Je continue mes test :
    voila si je recompile ma table CDT
    ensuite j'ouvre ma forms pour faire des modif sur ma vue (toto ou cdt-pointage), je peut faire autant de modif que je veux et c'est OK.
    Si je referme la form et la réouvre, là j'ai erreur explique sur le 1er message.

    Help ca devient incompréhensible

  6. #6
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par gaultier
    e me demande si ma vue n'est pas créée deux fois sous des users différents . Je ne me souviens plus de la table système qui référence les vues et les créateurs.

    MERCI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select owner, object_name from all_objects where object_name = 'CDT_POINTAGE'

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    Oula ! C'est bizarre !!!
    Voici la requete qui te permet de voir si ta vue n'est pas en double :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from all_objects where object_type = 'VIEW' and owner not in ('SYS', 'SYSTEM') and object_name = 'cdt_pointage'
    As-tu commité les modifs avant de sortir de ta form la première fois ?
    "There are two major products that come out of Berkeley: LSD and UNIX.
    We don't believe this to be a coincidence."
    - Jeremy S. Anderson

    La FAQ Python
    Les cours et tutoriels pour apprendre Python
    Le Forum Python

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Non ma vue existe bien que sous un seul user.


  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Si j'affiche en même temps que l'erreur forms, l'erreur base avec DBMS, il me renvoi l'erreur base ORA - 1403 : no data found en même temps.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Est ce que quelqu'un à une idéé pour mon petit pb de vue. Je pense que je vais bientot m'arracher les cheveux.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    J'ai trouvé des infos sur METALINK, une personne a eu exactement le même pb que moi. Une personne lui a demandé de modifier la valeur de l'option key mode du block de la vue.

    J'ai testé ca marche. Je me demande si tout ceci ne serait pas lié au fait que sur la table CDT qui est utilisé dans la vue CDT_POINTAGE, existe une contrainte de clé primaire et que celui est référencé sur une autre table comme clé étrangère.

    Ca marche c'est le principe.

    Merci à tous

  12. #12
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    Ok. et quelle valeur avez-vous positionné pour obtenir le bon résultat ?
    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

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    J'ai mis Key mode en mode unique et la propriété update changed columns only à true

  14. #14
    En attente de confirmation mail
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 20
    Points
    20
    Par défaut Mise à jour côté base non réussi
    Salut à tous,
    J'ai eu le même problème, j'ai posé la propriété Key-Mode à Unique et update only chaged record à Yes, ça n'a pas mrché.
    J'ai positionné la première à updatable, ça a écrasé tous mes records et les a mis à jour tous à la valeur passée.
    Idem pour le delete.
    J'ai changé mon code dans le on-update et on-delete mais la sauvegarde malgré un affichage forms, n'a pas eu lieu côté base

    On-update:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    :SYSTEM.SUPPRESS_WORKING := 'TRUE';
          update gmac_item_categories
            set whse_code = :GMACCTGY.whse_code,
                 item_no = :GMACCTGY.item_no,
                 int_category = :GMACCTGY.int_category 
            where rowid = :GMACCTGY.rowid;
            --commit_form;
    :SYSTEM.SUPPRESS_WORKING := 'FALSE';
    On'delete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    delete  from gmac_item_categories
     where rowid = :GMACCTGY.rowid ;
     --commit_form;
    C'est trés urgent, pourriez vous me donner une solution, car j'ai épuisé toute possibilité me paraissait logique

    Merci d'avance

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

Discussions similaires

  1. Mise à jour d'une vue
    Par Turvy dans le forum Android
    Réponses: 2
    Dernier message: 21/12/2014, 19h32
  2. Régle de mise à jour d'une vue
    Par billybob2 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/06/2011, 15h50
  3. "Mise à jour" d'une vue
    Par mostro_600 dans le forum SQL
    Réponses: 6
    Dernier message: 18/06/2007, 17h24
  4. [SWT] Mise à jour d'une vue
    Par Nikk0 dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 16/06/2007, 13h13
  5. Mise a jour d'une vue
    Par pierrot2908 dans le forum Interfaces Graphiques en Java
    Réponses: 12
    Dernier message: 24/04/2007, 17h23

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