none
Probleme ForeignKeyConstraint En Ado.net Mode Deconnecter RRS feed

  • Question

  • Bonjour,

    tt simplement , je travaille dans une application Ado.net lie avec une base de données SQLSERVER  , le Probleme j ai ajouter des Foreign  key en base de données , j ai deux tables , la première c'est la table Entite et la deuxième c'est la table Employe .

      Entite(Id_Entite(clé primaire) , Nom_Entite , Type_Entite , Entite_Parent)

      Employe(Id_Employe(clé primaire) , Nom_Emp , Prenom_Emp , Date_Naissance , Tele_Emp , Ville , Email_Emp , Id_Entite(clé étrangère))

    Le Probleme Quand je veux ajouter une Entite me donne ce Erreur : foreignkeyconstraint R a besoin des valeurs de cles enfants (A) dans la table parente

    Le code source est ci-dessus :

      private void Form1_Load(object sender, EventArgs e)
            {

    ds.Tables["Entite"].PrimaryKey = new DataColumn[] { ds.Tables["Entite"].Columns["Id_Entite"] };     
    ds.Tables["Employe"].PrimaryKey = new DataColumn[] { ds.Tables["Employe"].Columns["Id_Employe"] };

    ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Employe"].Columns["Id_Entite"], ds.Tables["Entite"].Columns["Id_Entite"]);
                cle.UpdateRule = Rule.Cascade;
                cle.DeleteRule = Rule.Cascade;

                cle.AcceptRejectRule = AcceptRejectRule.Cascade

              ds.Tables["Entite"].Constraints.Add(cle);

    }

    private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    r = Form1.ds.Tables["Entite"].NewRow();
                    r[0] = textBox1.Text;
                    r[1] = textBox2.Text;
                    r[2] = textBox3.Text;
                    r[3] = textBox4.Text;
                    Form1.ds.Tables["Entite"].Rows.Add(r);



                    Form1.da.InsertCommand = Form1.cn.CreateCommand();
                    Form1.da.InsertCommand.CommandText = "insert into Entite values (@Id_Entite , @Nom_Entite , @Type_Entite , @Entite_Parent)";
                    Form1.da.InsertCommand.Parameters.Add("@Id_Entite", SqlDbType.VarChar, 50, "Id_Entite");
                    Form1.da.InsertCommand.Parameters.Add("@Nom_Entite", SqlDbType.VarChar, 50, "Nom_Entite");
                    Form1.da.InsertCommand.Parameters.Add("@Type_Entite", SqlDbType.VarChar, 50, "Type_Entite");
                    Form1.da.InsertCommand.Parameters.Add("@Entite_Parent", SqlDbType.VarChar, 50, "Entite_Parent");
                    Form1.da.Update(Form1.ds.Tables["Entite"]);



             
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    MessageBox.Show("Bien Enregistrer");
                    textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = "";

                }
            }

    Svp aidez moi , Merci beaucoup..

    Cordialement

    El Mehdi

     

     

    lundi 24 janvier 2011 15:06

Réponses

  • Bonjour,

    Ta ForeignKeyConstraint doit êter créée de cette manière :

    ForeignKeyConstraint cle = new ForeignKeyConstraint("NomCle", ColonneParent, ColonneEnfant)

    Or dans ton code, on a :

    ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Employe"].Columns["Id_Entite"], ds.Tables["Entite"].Columns["Id_Entite"]);

    Ce qui veut dire que tu as défini la table Employe comme la table parent, alros que ca devrait être l'inverse.

    Essaie avec :

    ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Entite"].Columns["Id_Entite"], ds.Tables["Employe"].Columns["Id_Entite"]);

    Cordialement,

    Thomas


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Marokino1 mardi 25 janvier 2011 18:45
    mardi 25 janvier 2011 11:02

Toutes les réponses

  • Bonjour,

    Ta ForeignKeyConstraint doit êter créée de cette manière :

    ForeignKeyConstraint cle = new ForeignKeyConstraint("NomCle", ColonneParent, ColonneEnfant)

    Or dans ton code, on a :

    ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Employe"].Columns["Id_Entite"], ds.Tables["Entite"].Columns["Id_Entite"]);

    Ce qui veut dire que tu as défini la table Employe comme la table parent, alros que ca devrait être l'inverse.

    Essaie avec :

    ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Entite"].Columns["Id_Entite"], ds.Tables["Employe"].Columns["Id_Entite"]);

    Cordialement,

    Thomas


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Marokino1 mardi 25 janvier 2011 18:45
    mardi 25 janvier 2011 11:02
  • Bonsoir ,

    Merci Mr Thomas , l essai a donner un resultat , Merci bcp , A la prochaine nchaalah :)

     

    Cordialement,

    El Mehdi

    mardi 25 janvier 2011 18:48