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 :

[Forms 6i] : update sur vue


Sujet :

Forms Oracle

  1. #1
    Membre confirmé
    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
    Par défaut [Forms 6i] : update sur vue
    Bonjour à tous

    Ca fait longtemps que je n'ai pas fais appels à vos lumières pour un problème en forms.

    Version forms : 6.0.8.27.0
    Version Base : 9.2.0.4

    Je voudrais faire un update sur une vue à travers forms. J'ai mis en place des triggers sur la base en insert, update et delete avec la fonction instead of qui envoie l'instruction sur la bonne table.

    Script de la table gamme_article :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    ALTER TABLE OPS$PROJET.GAMME_ARTICLE
     DROP PRIMARY KEY CASCADE;
     
    DROP TABLE OPS$PROJET.GAMME_ARTICLE CASCADE CONSTRAINTS;
     
    CREATE TABLE OPS$PROJET.GAMME_ARTICLE
    (
      SAISON    VARCHAR2(5 BYTE)                    NOT NULL,
      SECTEUR   VARCHAR2(5 BYTE)                    NOT NULL,
      RGP_PAYS  VARCHAR2(5 BYTE)                    NOT NULL,
      ART       NUMBER                              NOT NULL,
      GAMME     VARCHAR2(5 BYTE)                    NOT NULL,
      DATM      DATE                                NOT NULL,
      DATC      DATE                                NOT NULL,
      USERM     VARCHAR2(20 BYTE)                   NOT NULL,
      USERC     VARCHAR2(20 BYTE)                   NOT NULL,
      IDLIG     INTEGER                             NOT NULL
    )
    TABLESPACE TMED
    PCTUSED    40
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          5M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    LOGGING 
    NOCOMPRESS 
    NOCACHE
    NOPARALLEL
    NOMONITORING;
     
    COMMENT ON TABLE OPS$PROJET.GAMME_ARTICLE IS 'Gestion des Gamma Article par Saison,segment,pays)';
     
     
    CREATE UNIQUE INDEX OPS$PROJET.K_GAMME_ARTICLE ON OPS$PROJET.GAMME_ARTICLE
    (IDLIG)
    LOGGING
    TABLESPACE TSMALL
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          512K
                NEXT             512K
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE UNIQUE INDEX OPS$PROJET.K2_GAMME_ARTICLE ON OPS$PROJET.GAMME_ARTICLE
    (SAISON, SECTEUR, RGP_PAYS, ART, GAMME)
    LOGGING
    TABLESPACE TSMALL
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          512K
                NEXT             512K
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
    ALTER TABLE OPS$PROJET.GAMME_ARTICLE ADD (
      CONSTRAINT K_GAMME_ARTICLE
     PRIMARY KEY
     (IDLIG)
        USING INDEX 
        TABLESPACE TSMALL
        PCTFREE    10
        INITRANS   2
        MAXTRANS   255
        STORAGE    (
                    INITIAL          512K
                    NEXT             512K
                    MINEXTENTS       1
                    MAXEXTENTS       UNLIMITED
                    PCTINCREASE      0
                    FREELISTS        1
                    FREELIST GROUPS  1
                   ));
     
    ALTER TABLE OPS$PROJET.GAMME_ARTICLE ADD (
      CONSTRAINT CR_GAMME_ARTICLE_1 
     FOREIGN KEY (ART) 
     REFERENCES OPS$PROJET.ARTNEW (ART)
        ON DELETE CASCADE);
     
    GRANT ALTER, DELETE, INSERT, SELECT, UPDATE, ON COMMIT REFRESH, QUERY REWRITE, DEBUG, FLASHBACK ON OPS$PROJET.GAMME_ARTICLE TO MINIER;
    Code la vue vgamme_article. C'est cette vue que je veux modifier dans forms
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    DROP VIEW OPS$PROJET.VGAMME_ARTICLE;
     
    /* Formatted on 21/05/2010 09:30:09 (QP5 v5.115.810.9015) */
    CREATE OR REPLACE FORCE VIEW OPS$PROJET.VGAMME_ARTICLE
    (
       ART,
       BNB,
       BCT,
       HGA,
       SAISON,
       RGP_PAYS,
       GAMME,
       SECTEUR,
       IDLIG
    )
    AS
       SELECT   a.art,
                a.bnb,
                a.bct,
                a.hga,
                g.saison,
                g.rgp_pays,
                g.gamme,
                g.secteur,
                g.idlig
         FROM   gamme_article g, artnew a
        WHERE   a.art = a.rgpart AND a.hga IN (0, 6, 7) AND g.art(+) = a.art;
     
     
    DROP TRIGGER OPS$PROJET.T_VGAMME_ARTICLE_DEL;
     
    CREATE OR REPLACE TRIGGER OPS$PROJET.t_vgamme_article_del
    instead of delete
    ON OPS$PROJET.VGAMME_ARTICLE for each row
    begin
    --
    -- $TRIGGER/gamme_article.sql
    -- Le Delete est lance sur la vue mais
    -- l instruction instead of permet de rediriger le delete vers la bonne table
    -- en l occurence gamme_article;
     
            delete gamme_article where idlig = :old.idlig;
    END;
    /
     
     
    DROP TRIGGER OPS$PROJET.T_VGAMME_ARTICLE_INS;
     
    CREATE OR REPLACE TRIGGER OPS$PROJET.t_vgamme_article_ins
    instead of insert
    ON OPS$PROJET.VGAMME_ARTICLE for each row
    begin
    --
    -- $TRIGGER/gamme_article.sql
    -- L insert est lance sur la vue mais
    -- l instruction instead of permet de rediriger l update vers la bonne table
    -- en l occurence gamme_article;
     
    	insert into gamme_article (saison,secteur,rgp_pays,gamme,art)
    	values (:new.saison,:new.secteur,:new.rgp_pays,:new.gamme,:new.art);
    END;
    /
     
     
    DROP TRIGGER OPS$PROJET.T_VGAMME_ARTICLE_UPD;
     
    CREATE OR REPLACE TRIGGER OPS$PROJET.t_vgamme_article_upd
    instead of update
    ON OPS$PROJET.VGAMME_ARTICLE for each row
    begin
    --
    -- $TRIGGER/gamme_article.sql
    -- Update est lance sur la vue mais
    -- l instruction instead of permet de rediriger l update vers la bonne table
    -- en l occurence gamme_article;
     
    	update gamme_article set saison = :new.saison
    				,secteur = :new.secteur
    				,rgp_pays = :new.rgp_pays
    				,gamme = :new.gamme
    				,art = :new.art
    				where idlig = :old.idlig;
    END;
    /
     
     
    DROP PUBLIC SYNONYM VGAMME_ARTICLE;
     
    CREATE PUBLIC SYNONYM VGAMME_ARTICLE FOR OPS$PROJET.VGAMME_ARTICLE;
     
    GRANT DELETE, INSERT, SELECT, UPDATE, ON COMMIT REFRESH, QUERY REWRITE, DEBUG, FLASHBACK ON OPS$PROJET.VGAMME_ARTICLE TO MINIER;
    Les scripts des triggers sur la vue vgamme_article sont à la fin de la partie code sur la vue vgamme_article.

    Lorsque je veux faire une modification dans la form, il me donne une erreur :

    FRM - 40602 : cannot insert into or update in view.
    Quels sont les propriétés de mon block basé sur ma vue que je dois modification pour que ca fonctionne.

    J'ai vu dans un vieux message sur un forum qu'il fait modifier la valeur du champ locking mode mais je ne sais pas quoi mettre.

    Si je fais un insert ou update ou delete en SQL directement, là tout fonctionne bien. Les triggers instead of jouent bien leur rôle.

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    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
    Par défaut
    Bonjour

    un petit coup de mains serait le bienvenu sur mon problème.

    J'avais grand espoir avec cette fonctionnalité mais c'est encore form qui me bloque !!!

    Merci d'avance

  3. #3
    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
    Faites les opérations sur cette vue via les triggers ON-INSERT, ON-UPDATE et ON-DELETE

  4. #4
    Membre confirmé
    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
    Par défaut
    Merci beaucoup pour la réponse rapide.

    Je regarde de ce coté là.

  5. #5
    Membre confirmé
    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
    Par défaut
    J'ai désactivé mes trigger instead of

    J'ai refait un block sur ma vue vgamme_article

    J'ai mis le code du trigger insert (instead of) dans le trigger form on-insert.
    Lorsque je désire faire modifier la valeur d'un champ affiché, j'obtiens l'erreur frm suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FRM - 40501 : unable to reserve record for update or delete
    Donc l'opération update n'a pas encore commencé. Pour info voici le code que j'ai mis dans mon trigger on-insert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into gamme_article (saison,secteur,rgp_pays,gamme,art)
    	values (:a.saison,:a.secteur,:a.rgp_pays,:A.gamme,:a.art);
    Merci d'avance

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Ou tu peux utiliser les triggers INSTEAD OF au niveau Base de Données
    instead of insert, update,delete
    Exemple:
    http://www.vbforums.com/showthread.php?t=566036

  7. #7
    Membre confirmé
    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
    Par défaut
    Citation Envoyé par salim11 Voir le message
    Ou tu peux utiliser les triggers INSTEAD OF au niveau Base de Données
    instead of insert, update,delete
    Justement c'est ce que je désire faire mais je n'arrive pas à les utiliser ensuite avec forms. Voir le premier post

  8. #8
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Peux-tu post kle script de création de la table artnew?

  9. #9
    Membre confirmé
    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
    Par défaut
    script de la table artnew

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    CREATE TABLE OPS$PROJET.ARTNEW
    (
      ART        NUMBER(5),
      NB         NUMBER(5),
      COND       NUMBER(3),
      FORM       VARCHAR2(3 BYTE),
      TAILLE     VARCHAR2(3 BYTE),
      BNB        VARCHAR2(50 BYTE),
      BCT        VARCHAR2(15 BYTE),
      COUL       VARCHAR2(20 BYTE),
      FAM        VARCHAR2(1 BYTE),
      TRA        NUMBER(2),
      SOC        VARCHAR2(1 BYTE),
      PEP        NUMBER(3),
      SOCP       VARCHAR2(1 BYTE),
      PEPP       NUMBER(3),
      HGA        NUMBER(1),
      PVE        NUMBER,
      PPD        NUMBER,
      MUL        NUMBER(9,2),
      PDS        NUMBER(7,2),
      LNB        VARCHAR2(50 BYTE),
      LCOND      VARCHAR2(15 BYTE),
      LFORM      VARCHAR2(15 BYTE),
      LTAILLE    VARCHAR2(15 BYTE),
      QTH        NUMBER(7),
      FAMT       VARCHAR2(3 BYTE),
      TVART      NUMBER(2),
      FLAG       VARCHAR2(1 BYTE),
      TYPC       VARCHAR2(3 BYTE),
      CONDO      NUMBER(3),
      LCONDO     VARCHAR2(15 BYTE),
      CHR        VARCHAR2(1 BYTE),
      FPA        NUMBER(5),
      FAME       VARCHAR2(3 BYTE),
      LIEUC      VARCHAR2(2 BYTE),
      GFAM       VARCHAR2(2 BYTE),
      VFAM       VARCHAR2(2 BYTE),
      TAILR      VARCHAR2(1 BYTE),
      NQTI       NUMBER,
      CONDI      NUMBER(3),
      LCONDI     VARCHAR2(15 BYTE),
      PEPI       NUMBER(3),
      FAMD       VARCHAR2(1 BYTE),
      PHYTO      VARCHAR2(1 BYTE),
      CONF       VARCHAR2(3 BYTE),
      NPVE       NUMBER,
      QUAL       INTEGER,
      LQUAL      VARCHAR2(15 BYTE),
      NORMP      INTEGER,
      JPP        VARCHAR2(2 BYTE),
      PCULT      NUMBER,
      ARTC       NUMBER(6),
      CASES      VARCHAR2(5 BYTE),
      PVEMIN     NUMBER,
      QTMIN      NUMBER,
      NBARTPAL   NUMBER(4),
      PVEPAL     NUMBER,
      PVERFA     NUMBER,
      MULRFA     NUMBER(9,2),
      ARTRGP     INTEGER,
      ORDVID     INTEGER,
      CIP        NUMBER(6),
      QTHF       INTEGER,
      QTHE       INTEGER,
      CYCLE      CHAR(1 BYTE),
      NBPG       NUMBER(5),
      COEFPG     NUMBER,
      QTH_FUT    INTEGER,
      QTHF_FUT   INTEGER,
      QTHE_FUT   INTEGER,
      HAUT       NUMBER,
      LIEU_EDI   VARCHAR2(2 BYTE),
      COEFH      NUMBER,
      CODEH      VARCHAR2(1 BYTE),
      MAXHAUT    NUMBER,
      RGPART     NUMBER(5),
      COEFRAT    NUMBER,
      MARQUAGE   VARCHAR2(3 BYTE),
      IDCHR      VARCHAR2(8 BYTE),
      MARQCOM    VARCHAR2(4 BYTE),
      PUB_WEB    VARCHAR2(1 BYTE),
      TYPMAR     VARCHAR2(3 BYTE),
      SOUPLE     VARCHAR2(1 BYTE)                   DEFAULT 'N',
      FRAGILE    VARCHAR2(1 BYTE)                   DEFAULT 'N',
      DIAMETRE   NUMBER,
      GERBER     VARCHAR2(1 BYTE)                   DEFAULT 'N',
      HAUT_POT   NUMBER,
      FAMU       VARCHAR2(1 BYTE),
      TYPKC      VARCHAR2(1 BYTE),
      PCRA       NUMBER                             DEFAULT 9,
      SOUPLESSE  NUMBER                             DEFAULT 0,
      MARQUAGE2  VARCHAR2(3 BYTE),
      DATC       DATE,
      DATM       DATE,
      USERC      VARCHAR2(30 BYTE),
      USERM      VARCHAR2(30 BYTE),
      GAMME      VARCHAR2(5 BYTE)
    )
    TABLESPACE TBIG
    PCTUSED    40
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          8M
                NEXT             20M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    LOGGING 
    NOCOMPRESS 
    NOCACHE
    NOPARALLEL
    NOMONITORING;
     
    CREATE UNIQUE INDEX OPS$PROJET.K_ARTNEW ON OPS$PROJET.ARTNEW
    (ART)
    LOGGING
    TABLESPACE COMMANDE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          512K
                NEXT             500K
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE UNIQUE INDEX OPS$PROJET.K10_ARTNEW ON OPS$PROJET.ARTNEW
    (RGPART, ORDVID)
    LOGGING
    TABLESPACE TMED
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          3M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX OPS$PROJET.K2_ARTNEW ON OPS$PROJET.ARTNEW
    (NB)
    LOGGING
    TABLESPACE TMED
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          2M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX OPS$PROJET.K4_ARTNEW ON OPS$PROJET.ARTNEW
    (COND, CONDO, CONDI)
    LOGGING
    TABLESPACE TMED
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          2M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX OPS$PROJET.K5_ARTNEW ON OPS$PROJET.ARTNEW
    (NB, COND)
    LOGGING
    TABLESPACE TMED
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          2M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX OPS$PROJET.K6_ARTNEW ON OPS$PROJET.ARTNEW
    (COND, FORM, TAILLE, QUAL)
    LOGGING
    TABLESPACE TMED
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          2M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX OPS$PROJET.K7_ARTNEW ON OPS$PROJET.ARTNEW
    (ARTRGP)
    LOGGING
    TABLESPACE TMED
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          2M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX OPS$PROJET.K8_ARTNEW ON OPS$PROJET.ARTNEW
    (BNB)
    LOGGING
    TABLESPACE TMED
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          3M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX OPS$PROJET.K9_ARTNEW ON OPS$PROJET.ARTNEW
    (RGPART)
    LOGGING
    TABLESPACE TMED
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          3M
                NEXT             5M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;

  10. #10
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    J'ai testé ton script, ça marche
    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
     
    SQL>  select * from VGAMME_ARTICLE;
     
           ART BNB             BCT                    HGA SAISO RGP_P GAMME SECTE      IDLIG
    ---------- --------------- --------------- ---------- ----- ----- ----- ----- ----------
             1                                          6 Eté   PG    dhfdf Paris          2
     
    SQL> UPDATE vgamme_article
      2     SET saison = 'Prin'
      3   WHERE art = 1;
     
    1 ligne mise à jour.
     
    SQL>  select * from VGAMME_ARTICLE;
     
           ART BNB             BCT                    HGA SAISO RGP_P GAMME SECTE      IDLIG
    ---------- --------------- --------------- ---------- ----- ----- ----- ----- ----------
             1                                          6 Prin  PG    dhfdf Paris          2

  11. #11
    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
    Il suffit d'insérer dans la vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Insert into la_vue (...) values(...)
    l'activation du trigger basé INSTEAD OF se fait automatiquement de façon transparente.

  12. #12
    Membre confirmé
    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
    Par défaut
    Bonjour

    Merci pour vos réponses.

    Je suis d'accord avec vous, si je manipule ma vue en sql pas de souci mes triggers se déclenchent bien.

    Mais C'est forms qui m'empêche de mettre à jour ma vue dans une interface.
    Voir les message d'erreur dans mes post précédents.
    C'est uniquement un problème form.

    Bonne journée.

  13. #13
    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
    Mettez une instruction
    Dans le trigger ON-LOCK du block.

  14. #14
    Membre confirmé
    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
    Par défaut
    Merci je vais tester. Je vous tiens au courant.

  15. #15
    Membre confirmé
    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
    Par défaut
    Bonjour

    J'ai regardé du coté du ON-LOCK mais ca ne fonctionne pas.
    L'ensemble des solutions qui vous m'avez proposé se situe au moment de la validation de l'enregistrement. Mon premier problème se situe avant.

    Je ne peux déjà pas modifier physiquement la valeur d'un champ affiché. il me donne les erreurs dans les post du dessus.

    Merci d'avance pour votre aide.

  16. #16
    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
    FRM - 40501 : unable TO reserve record FOR UPDATE OR DELETE
    Lorsque vous placez une instruction Null; dans un trigger ON-LOCK sur le bloc, il n'y a plus de tentative de réservation de l'enregistrement.

    Sinon : Autre solution
    aller au chapitre 2.3.1

  17. #17
    Membre confirmé
    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
    Par défaut
    merci

    Je vais regarder de ce coté mais il n'y a aucune propriété à changer dans le block qui fait référence à la vue.

    Problème avec forms 6 ?.

    Lorsque je mettais un NULL dans le ON-LOCK du block sur la vue, j'avais toujours à la même erreur. Je vais refaire le test proprement.

Discussions similaires

  1. [SQL SERVER 2k5]Trigger update instead of sur vue
    Par qlaimand dans le forum Développement
    Réponses: 0
    Dernier message: 18/06/2008, 17h06
  2. Update sur vue
    Par lambert2 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 04/04/2008, 15h19
  3. [Access 2007] update sur des tables / vues SQL server
    Par Flamby38 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 28/09/2007, 13h56
  4. Mapping sur Vue / Update non voulue.
    Par Ho(c)ine. dans le forum Hibernate
    Réponses: 3
    Dernier message: 23/08/2007, 09h44
  5. [forms]block basé sur plusieurs vues
    Par ramaro dans le forum Forms
    Réponses: 1
    Dernier message: 14/04/2006, 12h05

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