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

C# Discussion :

INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_Child_Parent'


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_Child_Parent'
    bonjour tout le monde,

    ça fait plusieurs jours que j'essaie d’exécuter une transaction à partir des TableAdapters, mais sans réussir.

    ma transaction consiste à l'enregistrement d'une Vente, ses Détails et la mis à jour du stock. Elle se compose des instructions suivantes:


    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
                  private void ExecuteVenteTransaction()
            {
                //DataTables for manipulation
                DTSPharmacie.VenteDataTable ventesDT = new DTSPharmacie.VenteDataTable();
                DTSPharmacie.DetailsVenteDataTable detailsVenteDT = new DTSPharmacie.DetailsVenteDataTable();
                DTSPharmacie.ProduitDataTable produitDT = new DTSPharmacie.ProduitDataTable();
                //DataTableAdapters
                DTSPharmacieTableAdapters.VenteTableAdapter venteTA = new DTSPharmacieTableAdapters.VenteTableAdapter();
                DTSPharmacieTableAdapters.DetailsVenteTableAdapter detailsVenteTA = new DTSPharmacieTableAdapters.DetailsVenteTableAdapter();
                DTSPharmacieTableAdapters.ProduitTableAdapter produitTA = new DTSPharmacieTableAdapters.ProduitTableAdapter();
     
                //Add new row to Orders table
                DTSPharmacie.VenteRow ventesRow = ventesDT.NewVenteRow();
                ventesRow.DateVente = DateTime.Now ;
                ventesRow.Montant = float.Parse(txtTotal.Text);
                ventesRow.NomClient = "Zone nom du client";
                ventesDT.AddVenteRow(ventesRow);
     
                //Setup connection
                conn = new SqlConnection(Properties.Settings.Default.DBPharmacieConnectionString);
                conn.Open();
     
                //Setup transaction
                transaction = conn.BeginTransaction();
                HelperTA.SetTransaction(venteTA, transaction);
                HelperTA.SetTransaction(detailsVenteTA, transaction);
                HelperTA.SetTransaction(produitTA, transaction);
     
                produitTA.Fill(produitDT);
     
                //Update Orders table
                venteTA.Update(ventesDT);
     
                //Add new row to OrderDetails
                foreach (DataGridViewRow dgvr in dgvVente.Rows)
                {
                    //if(dgvr.
                    DTSPharmacie.DetailsVenteRow detailsVenteRow = detailsVenteDT.NewDetailsVenteRow();
                    detailsVenteRow.NumProd = (int)dgvr.Cells["NumProdVente"].Value;
                    detailsVenteRow.PUA = (float)dgvr.Cells["PUAMVente"].Value;
                    detailsVenteRow.PUV = (float)dgvr.Cells["PUVVente"].Value; ;
                    detailsVenteRow.Quantite = (int)dgvr.Cells["quantiteVente"].Value;
                    detailsVenteRow.Montant = detailsVenteRow.PUV * detailsVenteRow.Quantite;
                    detailsVenteRow.NumVente = ventesRow.NumVente;
                    detailsVenteDT.AddDetailsVenteRow(detailsVenteRow);
                    foreach (DTSPharmacie.ProduitRow pr in produitDT)
                    {
                        if (pr.NumProd == (int)dgvr.Cells["NumProdVente"].Value)
                        {
                            pr.Quantite = pr.Quantite - (int)dgvr.Cells["quantiteVente"].Value;
                            pr.EndEdit();
                            produitTA.Update(pr);
                        }
                    }
                }
                //Update DetailsVente table
                detailsVenteTA.Update(detailsVenteDT);
                //Commit transaction
                transaction.Commit();
     
            }
    ET c'est MON erreur :
    The INSERT statement conflicted with the FOREIGN KEY constraint "FK_DetailsVente_Produit". The conflict occurred in , table "dbo.Produit", column 'NumProd'.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    A priori tu essayes d'inserer une clef etrangere qui n'existe pas...

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut
    Merci mon problème c'est que je insère la vente avant l'ouverture de connexion et le début de transaction;

    Merci

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Citation Envoyé par elmoul7ak
    c'est que je insère la vente avant l'ouverture de connexion et le début de transaction
    Que dis tu la !
    Comment peut tu inserer un élément dans ta DB avant meme d'avoir ouvert la connexion ?

    Etudie la remarque de xian21

    Et essaye d'isoler l'endroit exact ou l'erreur se produit

Discussions similaires

  1. The INSERT statement conflicted with the FOREIGN KEY
    Par hajarussa dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/06/2009, 16h17
  2. Réponses: 2
    Dernier message: 09/08/2007, 12h38
  3. Message d'erreur 'violation of FOREIGN KEY constraint' de Interbase
    Par abdelghani_k dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/06/2007, 09h11
  4. [C#/MS ACCESS] foreign key constraint
    Par GeantVert13 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 01/09/2006, 22h38
  5. [clés étrangères] a foreign key constraint fails
    Par guidav dans le forum Débuter
    Réponses: 15
    Dernier message: 09/08/2006, 23h50

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