SQlexception sur TableAdapter.Update
Bonjour,
je dois faire une facture avec les lignes associées (détail facture).
par le clic sur un premier bouton, on obtient le détail facture, que je mets dans des row typés puis j ajoute ces rows au dataset
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| detailRow.code_prestation = codepresta;
detailRow.lib_prestation = _libellePrestation;
detailRow.montant_ht = Convert.ToDecimal(tarifimport.redevance_import(Convert.ToDouble(ultraGrid1.ActiveRow.Cells["Poids colis"].Value), false, false, false));
detailRow.montant_tva = 0;
detailRow.taux_tva = 0;
detailRow.montant_ttc = detailRow.montant_ht;
detailRow.qte_facturee = 1;
detailRow.poids_facture = Convert.ToDouble(ultraGrid1.ActiveRow.Cells["Poids colis"].Value);
detailRow.valeur_declaree = Convert.ToDouble(ultraGrid1.ActiveRow.Cells["V. déclarée"].Value); ;
//pour l instant pas de num facture car c pa encore validé
detailRow.id_facture = 0;
dataSet_enlevement.detail_facture.Adddetail_factureRow(detailRow); |
Ensuite à la validation de la page, je veux changer l id facture précédemment mis a 0 pour le nouvel id facture obtenu. Mais lorsque j apelle l update sur le dataset j ai une sqlexception pour violation de contraintes sur id_facture. Je n'arrive pas à savoir quelle instruction sql a généré cette exception même avec le profiler de SQL server 2005. Est il possible de mélanger code sql et commandes c# pour la manipulation des bases de données ? Comment puis je récuperer l instruction sql en cause dans l'erreur ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
private void btn_valider_Click(object sender, EventArgs e)
{
string strRequete = "insert into facture(id_client,nom_du_client,no_document,mode_facture,montant_ht,montant_ttc,montant_tva,id_situ_facture) values(" + cbx_codeclient.SelectedValue + ",'" + nomcli + "',0,'" + modefact + "','" + mtht + "','" + mtttc + "','" + mttva + "',1); ";
//Execution de la requête
myCommand.CommandText = strRequete;
affectedRows = myCommand.ExecuteNonQuery();
string strRequete2 = "select ident_current('facture')";
myCommand.CommandText = strRequete2;
affectedRows = Convert.ToInt32(myCommand.ExecuteScalar());
//Donner l'id facture aux lignes detail facture
for (int i = 0; i < ultraGrid2.Rows.Count; i++)
{
ultraGrid2.Rows[i].Cells["id_facture"].Value = affectedRows;
}
detailfactureBindingSource.EndEdit();
detail_factureTableAdapter.Update(dataSet_enlevement.detail_facture.Select(null, null, DataViewRowState.Added));
} |
Citation:
L'instruction INSERT est en conflit avec la contrainte FOREIGN KEY 'FK_detail_facture_facture'. Le conflit s'est produit dans la base de données 'madtfret', table 'dbo.facture', column 'id_facture'.
L'instruction a été arrêtée.