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

VB.NET Discussion :

probleme vb.net erreur foreign key lors d'une insertion dans la base via application [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : marc bloch
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 70
    Par défaut probleme vb.net erreur foreign key lors d'une insertion dans la base via application
    Bonjours je me retrouve coincer suite a une erreur donc je ne connait pas du tout la solution .
    dans l'application je souhaite inserer les champs que j'ai remplis dans mon application mais lors de cet action ( via un bouton) je me retrouve avec cet erreur

    Cannot add or update a child row: a foreign key constraint fails (`stage`.`materiel`, CONSTRAINT `materiel_ibfk_1` FOREIGN KEY (`numeroCategories`) REFERENCES `categoriemateriel` (`NumeroCategorie`) ON DELETE CASCADE ON UPDATE CASCADE).

    je vous donne le code gerant cet insertion

    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
    Private Sub BtnAjouterPO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAjouterPO.Click
     
     
            If CbMarque2.Text <> "" Then
                Dim a As String
                Dim b As String
                Dim c As String
                Dim d As String
                Dim i As String
                Dim f As String
                Dim g As String
                Dim h As String
                Dim j As String
     
                a = Txtidmateriel.Text
                b = CbMarque2.Text
                c = txtDesignation.Text
                d = CbCategorie2.Text.ToString
                i = Cbreference.Text
                f = TxtTaille2.Text
                g = TxtPrix.Text
                j = txtquantiter.Text
     
                h = b & " " & c & " " & f
     
                connection.MaRequete = "Insert into materiel Values ( " & a & " , '" & h & "', " & g & " ," & j & " ,'" & i & "' , '" & d & "' )"
                connection.MaCommandeSpecialRequete.CommandText = connection.MaRequete
                connection.MaCommandeSpecialRequete.ExecuteNonQuery()
                MessageBox.Show("Materiel Ajoutée...!", "Insertion", MessageBoxButtons.OK, MessageBoxIcon.Information)
                position = 0
                RechargerLesDonnees()
                RafraichirListe()
                BtnAjouterPO.Text = "+"
            Else
                MessageBox.Show("Erreur de saisie...!", "Alerte!", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
     
        End Sub

    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
     Private Sub RechargerLesDonnees()
            connection.MonJeuDeDonnees.Tables("Toutmateriel").Clear()
            connection.MaRequete = "select idmateriel,nommateriel,prixmateriel,quantiter,reference,numerocategories,nomcategorie from materiel,categoriemateriel where (materiel.numeroCategories=categoriemateriel.NumeroCategorie) "
            connection.MaCommandeSpecialRequete.CommandText = connection.MaRequete
            connection.MonRemplisseur.SelectCommand = connection.MaCommandeSpecialRequete
            connection.MonRemplisseur.Fill(connection.MonJeuDeDonnees, "Toutmateriel")
        End Sub
     
        Public Sub Rafraichir()
            Txtidmateriel.Text = connection.MonJeuDeDonnees.Tables("Toutmateriel").Rows(position).Item(0)
            CbMarque.Text = connection.MonJeuDeDonnees.Tables("Toutmateriel").Rows(position).Item(1)
            txtDesignation.Text = connection.MonJeuDeDonnees.Tables("Toutmateriel").Rows(position).Item(2)
            CbCategorie2.Text = connection.MonJeuDeDonnees.Tables("Toutmateriel").Rows(position).Item(3)
            Cbreference.Text = connection.MonJeuDeDonnees.Tables("Toutmateriel").Rows(position).Item(4)
            TxtTaille2.Text = connection.MonJeuDeDonnees.Tables("Toutmateriel").Rows(position).Item(5)
            TxtPrix.Text = connection.MonJeuDeDonnees.Tables("Toutmateriel").Rows(position).Item(6)
            DgOccasResultat.DataSource = connection.MonJeuDeDonnees.Tables("Toutmateriel")
        End Sub
    je vous remercie d'avance de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Problème sur la clé étrangère du Insert into.

    "d = CbCategorie2.Text.ToString" correspond à numeroCategories de la table Materiel je pense, donc la valeur entrée est-elle bien présente dans la base CatégorieMateriel en tant que clé primaire?

  3. #3
    Membre confirmé
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : marc bloch
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 70
    Par défaut
    comment sa ? il me semble que oui

    mes table son comme ceux ci

    Materiel

    idMateriel
    NomMateriel
    PrixMateriel
    Quantiter
    numeroCategories
    reference


    categoriemateriel

    NumeroCategorie
    NomCategorie

  4. #4
    Invité
    Invité(e)
    Par défaut
    Vous avez deux tables materiel et categoriemateriel, le lien entre les deux est la clé primaire de categoriemateriel qui est NumeroCategorie avec la clé étrangère dans materiel qui est numeroCategories.

    Lors de l'ajout, d'un materiel, le champ "CbCategorie2" doit comporter une valeur qui est déjà dans la table categoriemateriel sur la colonne NumeroCategorie.

    Et ceci doit se faire avec le même type, donc normalement un id donc un entier, je vois que le champ d est un String donc une chaine.

    Quel est le type des champs categoriemateriel dans vos deux bases?

  5. #5
    Membre confirmé
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : marc bloch
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 70
    Par défaut
    des entiers

    mais enfaite je les mis en string parceque dans le champ cbcategori2 (combobox) afficher les differente categorie sous leur non via une requete que javais fait avant

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui donc la combobox affiche le nom, mais toi tu doit en extraire le numéro associer est pas le nom pour l'entrée dans la table Materiel.
    C'est ce que tu fais ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d = CbCategorie2.Text.ToString
    Donc tu dois ajouter à ta combobox ce numéro de catégorie associer au nom sans l'afficher, pour ensuite le récupérer est le mettre dans d.
    Modifie aussi d en Integer est pas String.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/05/2010, 15h33
  2. Récupération message d'erreur lors d'une insertion dans une BDD
    Par LoDev dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 22/12/2007, 19h11
  3. Erreur SQL 82086 lors d'une insertion
    Par Andry dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/11/2007, 12h46
  4. [MySQL] Erreur lors de l'insertion dans ma base de doneés
    Par ANISSS dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/11/2006, 12h47
  5. [SQL] FOREIGN KEY lors de la création de la base
    Par R.L. dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 31/05/2006, 15h36

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