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

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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
    Points : 33
    Points
    33
    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
    Nouveau membre du Club
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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
    Points : 33
    Points
    33
    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
    Nouveau membre du Club
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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
    Points : 33
    Points
    33
    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.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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
    Points : 33
    Points
    33
    Par défaut
    si j'ai bien compirs je met

    d= cbcategories.valuemember

    et je le declare en integer ( dim d as integer)

    c'est bien sa ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Tu doit gérer ta combox, je vais pas te faire ton code et ça fait 5 ans que j'en ai pas fait ,
    mais pour t'aider j'ai trouvé ça qui explique bien ce que tu veux:
    http://cyrilhome.over-blog.net/article-10237868.html

    à toi d'adapter et tester

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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
    Points : 33
    Points
    33
    Par défaut
    et tu sur que c'est se qu'il me faut parceque j'ai un doute mais pour enlever mon doute je te reexplique la chose si tu veut bien .

    Je souhaite faire un insertion de materil dans ma table materiel .
    pour cella j'ai plusieur textbpx et combox qui prend en compte les saisie de l'utilisateur.
    mais pour des raison de faciliter j'ai fait un joiture pour ma combobox qui pour au lieu d'afficher le numerocategories ( clef etrangere de materiel ) affccher le nommateriel de la table categoriemateriel.
    le problem et ue quand je veut ajouter j'ai des erreur et comme tu me la fait comprendre serais du a cbcategories.
    mais se que je comprend pas c'est que etant donner que il y ai eu jointure lors de la selection dans la comboboxcategories d'une categorie celle-ci devrai lieu automatiquement le materiel a une categorie .

  10. #10
    Invité
    Invité(e)
    Par défaut
    etant donner que il y ai eu jointure lors de la selection dans la comboboxcategories d'une categorie celle-ci devrai lieu automatiquement le materiel a une categorie .
    Non ce n'est pas la jointure qui gere tous! Tu dois faire ce que je t'ai dit précédemment extraire un NUMERO et non une CHAINE!

    Mais tu peux laisser dans ta combobox le nom de la categorie et pour cela, tu dois suivre un tutoriel comme celui que je t'ai donné.

    Bonne chance
    Dernière modification par rv26t ; 18/05/2014 à 15h14.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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
    Points : 33
    Points
    33
    Par défaut
    Impossible de modifier la collection d'éléments lorsque la propriété DataSource est définie. erreur ...

    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
    Public Class ListItem
     
        Public Value As Object
        Public Text As String
     
        Public Sub New(ByVal NewValue As Object, ByVal NewText As String)
            Value = NewValue
            Text = NewText
        End Sub
     
        Public Overrides Function ToString() As String
            Return Text
        End Function
     
     
    End Class



    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
     Dim myTable As DataTable
            Dim item As DataRow
     
            connection.MaRequete = "SELECT  NomCategorie FROM materiel,categoriemateriel WHERE (materiel.numeroCategories=categoriemateriel.numeroCategorie)"
            connection.MaCommandeSpecialRequete.CommandText = connection.MaRequete
            connection.MonRemplisseur.SelectCommand = connection.MaCommandeSpecialRequete
            connection.MonRemplisseur.Fill(connection.MonJeuDeDonnees, "hb")
            CbCategorie2.DataSource = connection.MonJeuDeDonnees.Tables("hb")
            CbCategorie2.DisplayMember = "nomcategorie"
     
            CbCategorie2.Items.Add(New ListItem("0", "<Toutes>"))
            For Each item In myTable.Rows
                CbCategorie2.Items.Add(New ListItem(item("numerocategorie"), item("nomcategorie")))
            Next
            CbCategorie2.SelectedIndex = 0

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    marc bloch
    Inscrit en
    Février 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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
    Points : 33
    Points
    33
    Par défaut
    problme resolut je n'avias pas a faire le truc des item l'erreur venais simplment d ela requete qui avais deux colonne inverser .

+ 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