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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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 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)); }
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.
Partager