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

PL/SQL Oracle Discussion :

Probleme d'insertion d'un ensemble d'enregistrements (DETAIL) avec un bouton sous Oracle forms 10g


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club Avatar de Mednet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 53
    Points : 50
    Points
    50
    Par défaut Probleme d'insertion d'un ensemble d'enregistrements (DETAIL) avec un bouton sous Oracle forms 10g
    Salut,

    Mon problème c'est que à chaque fois que j'essaye d’insérer un ensemble d'enregistrements sous Forms 10g avec un boutton code' en PL/SQL comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into DETAIL_CMDS values (:MONTANT_HT,:NBRE_JOURS,:LIGNE_COMMANDE,: PROFIL,DET_CMD_SEQ.NEXTVAL,: DETAIL_CMDS.MONTANT_TTC,: DETAIL_CMDS.PRIX,: DETAIL_CMDS.TAUX_TVA,'COM_SEQ.CURRVAL');
    Avec : table COMMANDES est un Master et DETAIL_CMDS est un DETAIL.

    Merci d'avance !

  2. #2
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Salut,

    Difficile de répondre sans avoir un message d'erreur mais je pense avoir une idée du problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    INSERT INTO DETAIL_CMDS
         VALUES (:MONTANT_HT,
                 :NBRE_JOURS,
                 :LIGNE_COMMANDE,
                 :PROFIL,
                 DET_CMD_SEQ.NEXTVAL,
                 :DETAIL_CMDS.MONTANT_TTC,
                 :DETAIL_CMDS.PRIX,
                 :DETAIL_CMDS.TAUX_TVA,
                 'COM_SEQ.CURRVAL');
    Vous insérez la valeur 'COM_SEQ.CURRVAL' qui est un chaine de caractères dans la colonne qui j'imagine est la clé étrangère vers la table commande.
    Il vous suffit donc d'enlever les simple quotes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    INSERT INTO DETAIL_CMDS
         VALUES (:MONTANT_HT,
                 :NBRE_JOURS,
                 :LIGNE_COMMANDE,
                 :PROFIL,
                 DET_CMD_SEQ.NEXTVAL,
                 :DETAIL_CMDS.MONTANT_TTC,
                 :DETAIL_CMDS.PRIX,
                 :DETAIL_CMDS.TAUX_TVA,
                 COM_SEQ.CURRVAL);

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    CTRL+Shift+E pour avoir l'erreur Oracle.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre du Club Avatar de Mednet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 53
    Points : 50
    Points
    50
    Par défaut
    Voici l'erreur :
    ORA-01400: impossible d'insérer NULL dans ("SCOTT"."DETAIL_CMDS"."ID_DETAIL")
    Et voici mon programme :
    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
    BEGIN
    	first_record;
    Loop
    INSERT INTO DETAIL_CMDS(MONTANT_HT,
                 NBRE_JOURS,
                 LIGNE_COMMANDE,
                 PROFIL,
                 ID_DETAIL,
                 MONTANT_TTC,
                 PRIX,
                 TAUX_TVA,
                 CMD_ID_COMMANDE)
         VALUES (: DETAIL_CMDS.MONTANT_HT,
                 : DETAIL_CMDS.NBRE_JOURS,
                 : DETAIL_CMDS.LIGNE_COMMANDE,
                 : DETAIL_CMDS.PROFIL,
                 DET_CMD_SEQ.NEXTVAL,
                 : DETAIL_CMDS.MONTANT_TTC,
                 : DETAIL_CMDS.PRIX,
                 : DETAIL_CMDS.TAUX_TVA,
                 COM_SEQ.CURRVAL);
     EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE' ;
     NEXT_RECORD;
    END LOOP; 
    display_error;
     COMMIT_FORM;
     CLEAR_FORM();
     END;
    Merci d'avance

  5. #5
    Membre du Club Avatar de Mednet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 53
    Points : 50
    Points
    50
    Par défaut
    Enfin, le problème est résolu, en fait, j'ai oublié de créer un trigger en DB pour qu'à chaque insertion le id soit incrémenté

    Et voila le code manquant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE TRIGGER det_cmd_trg
    BEFORE INSERT ON detail_cmds
    FOR EACH ROW
    WHEN (new.id_detail IS NULL)
    BEGIN
      SELECT det_cmd_seq.NEXTVAL
      INTO   :new.id_detail
      FROM   dual;
    END;
    /
    Merci à tous.

  6. #6
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    ORA-01400: impossible d'insérer NULL dans ("SCOTT"."DETAIL_CMDS"."ID_DETAIL")
    Et pourtant dans votre requête d'insertion vous insérez bien la valeur de la séquence dans votre champs ID_DETAIL :

    INSERT INTO DETAIL_CMDS(MONTANT_HT,
    NBRE_JOURS,
    LIGNE_COMMANDE,
    PROFIL,
    ID_DETAIL,
    MONTANT_TTC,
    PRIX,
    TAUX_TVA,
    CMD_ID_COMMANDE)
    VALUES (: DETAIL_CMDS.MONTANT_HT,
    : DETAIL_CMDS.NBRE_JOURS,
    : DETAIL_CMDS.LIGNE_COMMANDE,
    : DETAIL_CMDS.PROFIL,
    DET_CMD_SEQ.NEXTVAL,
    : DETAIL_CMDS.MONTANT_TTC,
    : DETAIL_CMDS.PRIX,
    : DETAIL_CMDS.TAUX_TVA,
    COM_SEQ.CURRVAL);


    Il faudra m'expliquer l'intérêt du Trigger dans ce cas car j'ai du mal à comprendre

  7. #7
    Membre du Club Avatar de Mednet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 53
    Points : 50
    Points
    50
    Par défaut
    Hey Again ,

    En faite , Moi aussi j'ai creer la sequence pour faire incrementer le ID before chaque insertion mais ca marche pas : toujours le meme message d'erreur est affiche' , alors j'ai google' un peu et j'ai trouve' ce lien qui m'apparait tres utile :

    http://www.oracle-base.com/articles/...d-identity.php

    Bonne journee,

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

Discussions similaires

  1. [MySQL] probleme d'insertion des enregistrements
    Par ashley dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 30/08/2010, 16h49
  2. Oracle forms 10g insertion dans un tableau
    Par groy1 dans le forum Forms
    Réponses: 4
    Dernier message: 29/10/2007, 12h21
  3. Probleme d'insertion d'enregistrement
    Par haffouff dans le forum JDBC
    Réponses: 3
    Dernier message: 30/03/2007, 13h07
  4. Réponses: 3
    Dernier message: 18/09/2006, 18h30
  5. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32

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