reemosh
Messages postés11Date d'inscriptionmercredi 7 octobre 2009StatutMembreDernière intervention 3 avril 2014
-
1 avril 2014 à 20:37
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
6 avril 2014 à 11:37
bonjour
je suis entrain de realiser une application winform avec c# et sql server j'ai un probleme de conflit avec la clé etrangére
je vais inserer un produit qui a une clé etrangére vers une table famille et une table fournisseur
produit(id,nom,quantité,fournisseur,#idfamille,#idfournisseur)
fournisseur(id,intitule)
famille(id,marque,categorie)
cmd.CommandText = "insert into produit(id,nom,quantité,fournisseur,famille,fournisseur) SELECT '" + id.Text + "','" + nom.Text + "','" + quantite.Text + "','" + famille.combobox1.selectedValue+ "','" + fournisseur.combobox2.selectedValue+ "' FROM produit,fournisseur,famille WHERE produit.idfamille=famille.id AND produit.idfournisseur=fournisseur.id"
cmd.ExecuteNonQuery();
mais lors de l'execution il m'affiche ce message d'erreur L'instruction INSERT est en conflit avec la contrainte FOREIGN KEY "FK_produit_famille ". Le conflit s'est produit dans la base de données "bd", table "dbo.famille", column 'id'. L'instruction a été arrêtée.
reemosh
Messages postés11Date d'inscriptionmercredi 7 octobre 2009StatutMembreDernière intervention 3 avril 20141 3 avril 2014 à 21:00
oui je suis entrain de faire la jointure produit.idfamille je recupére l'id de la famille qui est le cle etrangere et famille.id c celui de la table famille
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 6 avril 2014 à 11:37
Bonjour
Difficile de t'aider sans voir plus de ton code.
Ton ordre insert spécifie 6 colonne, mais je ne vois que 5 valeurs.
Je ne comprends pas ce que vient faire la clause Select ... From dans ta requête
moi je verrai bien quelque chose comme :
string query=@"INSERT INTO produit(id, nom, quantité, fournisseur, idfamille, idfournisseur)
VALUES (@ProduitId, @ProduitNom, @ProduitQuantité, @ProduitFournisseur, @IdFamille, @IdFournisseur);"
cmd.CommandText = query;
cmd.Parameters.AddWithValue("@ProduitId",id.Text); // ou peut-être : int.Parse(id.Text)
cmd.Parameters.AddWithValue("@ProduitNom",nom.Text);
cmd.Parameters.AddWithValue("@ProduitQuantité",quantite.Text); // ou peut-être : int.Parse(quantite.Text);
cmd.Parameters.AddWithValue("@ProduitFournisseur",""); // là il manque une valeur !!
cmd.Parameters.AddWithValue("@IdFamille",famille.combobox1.selectedValue);
cmd.Parameters.AddWithValue("@IdFournisseur",fournisseur.combobox2.selectedValue);
cmd.ExecuteNonQuery();
Ensuite l'erreur SQL vient du fait que la famille passée en paramètre n'existe pas dans la table famille, mais cela peut-être du à l'absence de la valeur pour la colonne fournisseur, ce qui décale toutes les valeurs.