below my code i have two table salesorderAddeidt its is a procedure apply on saleorder table to get value from textboxes,and second table is orderdetail storeprocedure is OrderDetailAddorEdit to get value from datagridvew
In window form,error Additional information: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_OrderDetail_SalesOrder". The conflict occurred in database "SilverProduction", table "dbo.SalesOrder", column 'OrderNo'
private void btnSave_Click(object sender, EventArgs e)
{
if (ValidateMasterDetailForm())
{
int _EmpID = 0;
using (SqlConnection sqlCon = new SqlConnection(strConnectionString))
{
sqlCon.Open();
//Master[SalesOrderAddOrEdit]
SqlCommand sqlCmd = new SqlCommand("SalesOrderAddOrEdit", sqlCon);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@OrderNo", inEmpID);
// sqlCmd.Parameters.AddWithValue("@UserId", CType(Me.Session("UserDetails"), User).UserId);
sqlCmd.Parameters.AddWithValue("@Order_Ref_No", txtOrderRefNo.Text.Trim());
sqlCmd.Parameters.AddWithValue("@CustomerID", Convert.ToInt32(cmbCustomerName.SelectedValue.ToString()));
sqlCmd.Parameters.AddWithValue("@Order_date", dateTimePicker1.Value);
sqlCmd.Parameters.AddWithValue("@SOpirority", txtSO.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Status", cmbStatus.Text);
_EmpID = Convert.ToInt32(sqlCmd.ExecuteScalar());
}
//Details
using (SqlConnection sqlCon = new SqlConnection(strConnectionString))
{
sqlCon.Open();
foreach (DataGridViewRow dgvRow in dgvOrderDetail.Rows)
{
if (dgvRow.IsNewRow) break;
else
{
SqlCommand sqlCmd = new SqlCommand("OrderDetailAddOrEdit", sqlCon);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@IDOD", Convert.ToInt32(dgvRow.Cells["dgvtxtIDOD"].Value == DBNull.Value ? "0" : dgvRow.Cells["dgvtxtIDOD"].Value));
sqlCmd.Parameters.AddWithValue("@OrderNo", _EmpID);
sqlCmd.Parameters.AddWithValue("@CodeItem", dgvRow.Cells["dgvtxtCodeItem"].Value == DBNull.Value ? "" : dgvRow.Cells["dgvtxtCodeItem"].Value);
sqlCmd.Parameters.AddWithValue("@orderqty", dgvRow.Cells["dgvorderqty"].Value == DBNull.Value ? "" : dgvRow.Cells["dgvorderqty"].Value);
sqlCmd.ExecuteNonQuery();
}
}
}
FillEmployeeDataGridView();
Clear();
MessageBox.Show("Submitted Successfully");
}
}
USE [SilverProduction]
GO
/***** Object: StoredProcedure [dbo].[SalesOrderAddOrEdit] Script Date: 06/27/2019 02:20:05 *****/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[SalesOrderAddOrEdit]
@OrderNo int,
@Order_Ref_No varchar(50),
@CustomerID int,
@Order_date date,
@SOpirority int,
@Status varchar(50)
AS
--Insert
IF @OrderNo=0 Begin
insert into SalesOrder(Order_Ref_No,CustomerID,Order_date,SOpirority, Status) VALUES( @Order_Ref_No,@CustomerID,@Order_date,@SOpirority, @Status)
end
--Update
Else Begin
Update SalesOrder
set
Order_Ref_No=@OrderNo,
CustomerID=@CustomerID,
Order_date=@Order_date,
SOpirority=@SOpirority,
Status=@Status
where OrderNo=@OrderNo
select @OrderNo;
End
USE [SilverProduction]
GO
/***** Object: StoredProcedure [dbo].[OrderDetailAddOrEdit] Script Date: 06/27/2019 02:16:43 *****/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[OrderDetailAddOrEdit]
@IDOD int,
@OrderNo int,
@CodeItem int,
@orderqty int
As
--Insert
IF @OrderNo = 0
insert into OrderDetail(OrderNo,CodeItem,orderqty) VALUES( @OrderNo,@CodeItem,@orderqty)
--UPDATE
ELSE
UPDATE OrderDetail
SET
OrderNo=@OrderNo,
CodeItem=@CodeItem,
orderqty=@orderqty
WHERE IDOD = @IDOD