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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti 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
    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 chevronné
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    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 confirmé

    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
    Billets dans le blog
    4
    Par défaut
    CTRL+Shift+E pour avoir l'erreur Oracle.

  4. #4
    Membre averti 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
    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 averti 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
    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 chevronné
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    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

+ 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, 17h49
  2. Oracle forms 10g insertion dans un tableau
    Par groy1 dans le forum Forms
    Réponses: 4
    Dernier message: 29/10/2007, 13h21
  3. Probleme d'insertion d'enregistrement
    Par haffouff dans le forum JDBC
    Réponses: 3
    Dernier message: 30/03/2007, 14h07
  4. Réponses: 3
    Dernier message: 18/09/2006, 19h30
  5. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 13h32

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