จากปัญหาเดิม
http://ppantip.com/topic/30891800
ขึ้น Error ว่า The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Sale_Detail_Product". The conflict occurred in database "Project", table "dbo.Product", column 'pro_no'. The statement has been terminated.
ลองแก้ฐานข้อมูลให้เป็นแบบนี้แล้วคะ
ตาราง Sale : sale_no(PK), sale_date, cus_no(FK)
ตาราง Sale_Detail : order_no(PK) ตัวนี้เพิ่มเข้ามาเพื่อเป็นตัวนับตามคห.กระทู้ที้แล้วคะ ตั้งค่าให้เป็น IS Identity คือเรียงลำดับให้อัตโนมัติ 1,2,3,... , sale_no(FK), pro_no(FK), amount, sale_price
(ตารางฐานข้อมูลอื่นๆที่เกี่ยวข้อง)
ตารางCustomer : cus_no(PK), cus_name, cus_add, cus_tel
ตารางProduct : pro_no(PK), pro_name, pro_cost, pro_price, pro_stock, record_date
และลองแก้ไขให้Save ทีละปุ่มคะ
ปุ่มแรก ให้บันทึกในตาราง Sale ก่อน
____________________________________________________________________________________________
Private Sub Confirm_Btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Confirm_Btn.Click
If Sale_ListView.Items.Count > 0 Then
If MessageBox.Show("คุณต้องการยืนยันการขายสินค้า ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim sql As String = ""
Dim SqlParam As SqlParameter
sql = "INSERT INTO Sale (sale_no, sale_date, cus_no)"
sql &= "VALUES (@saleno, @saledate, @cusno)"
_cmd = New SqlCommand(sql, Conn)
SqlParam = New SqlParameter
SqlParam.ParameterName = "@saledate"
SqlParam.SqlDbType = SqlDbType.DateTime
SqlParam.Value = DateTimePicker1.Value
_cmd.Parameters.Add(SqlParam)
_cmd.Parameters.AddWithValue("saleno", lblS_ID.Text)
_cmd.Parameters.AddWithValue("cusno", txtM_ID.Text)
Try
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConnection
.Open()
End With
With _cmd
.CommandType = CommandType.Text
.CommandText = sql
.Connection = Conn
.ExecuteNonQuery()
End With
Catch ErrProcess As Exception
MessageBox.Show("ไม่สามารถเพิ่มข้อมูลได้ เนื่องจาก " & ErrProcess.Message, "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
MessageBox.Show("บันทึกการขายสินค้า เรียบร้อยแล้ว", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
_____________________________________________________________________________________________
ในส่วนนี้บันทึกเข้าไปในฐานข้อมูล "Sale" ได้ ไม่มีปัญหาคะ
และอีกปุ่มนึง ให้บันทึกลงในตาราง Sale_Detail คะ
_____________________________________________________________________________________________
Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
If Sale_ListView.Items.Count > 0 Then
If MessageBox.Show("คุณต้องการบันทึกการขายสินค้า ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim sql As String = ""
Dim i As Integer = 0
For i = 0 To Sale_ListView.Items.Count - 1
sql = "INSERT INTO Sale_Detail (sale_no, pro_no, amount, sale_price)"
sql &= " VALUES(" & (Sale_ListView.Items(i).SubItems(0).Text) & "," 'ในListView เป็นคอลัมภ์ เลขที่การขาย
sql &= (Sale_ListView.Items(i).SubItems(1).Text) & "," 'ในListView เป็นคอลัมภ์ รหัสสินค้า
sql &= (Sale_ListView.Items(i).SubItems(3).Text) & "," 'ในListView เป็นคอลัมภ์ จำนวน
sql &= (Sale_ListView.Items(i).SubItems(4).Text) & ")" 'ในListView เป็นคอลัมภ์ ราคาขาย
_cmd = New SqlCommand(sql, Conn)
With _cmd
.CommandType = CommandType.Text
.CommandText = sql
.Connection = Conn
.ExecuteNonQuery()
End With
Next
MessageBox.Show("บันทึกสินค้า เรียบร้อยแล้ว", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
__________________________________________________________________________________________
ปุ่มที่2 บันทึกลงไปในตาราง "Sale_Detail" ไม่ได้คะ ถึงจะแก้แล้ว ก็ยังขึ้น Error เหมือนเดิมคะ
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Sale_Detail_Product". The conflict occurred in database "Project", table "dbo.Product", column 'pro_no'. The statement has been terminated.
ไม่รู้จะแก้ยังไงดีแล้วคะ แก้มาหลายอาทิตย์แล้ว กับปัญหานี้
แก้ฐานข้อมูลหลายแบบแล้ว ก็ยังไม่ได้
ขอคำตอบจากพี่ๆผู้เชี่ยวชาญด้วยคะ
ลองดูหลายๆแบบ เผื่อจะออกซักที
โค้ด VB Error แก้ไม่หายซะที ค้างมาหลายอาทิตย์แล้ว ช่วยทีคะ !!!!!
http://ppantip.com/topic/30891800
ขึ้น Error ว่า The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Sale_Detail_Product". The conflict occurred in database "Project", table "dbo.Product", column 'pro_no'. The statement has been terminated.
ลองแก้ฐานข้อมูลให้เป็นแบบนี้แล้วคะ
ตาราง Sale : sale_no(PK), sale_date, cus_no(FK)
ตาราง Sale_Detail : order_no(PK) ตัวนี้เพิ่มเข้ามาเพื่อเป็นตัวนับตามคห.กระทู้ที้แล้วคะ ตั้งค่าให้เป็น IS Identity คือเรียงลำดับให้อัตโนมัติ 1,2,3,... , sale_no(FK), pro_no(FK), amount, sale_price
(ตารางฐานข้อมูลอื่นๆที่เกี่ยวข้อง)
ตารางCustomer : cus_no(PK), cus_name, cus_add, cus_tel
ตารางProduct : pro_no(PK), pro_name, pro_cost, pro_price, pro_stock, record_date
และลองแก้ไขให้Save ทีละปุ่มคะ
ปุ่มแรก ให้บันทึกในตาราง Sale ก่อน
____________________________________________________________________________________________
Private Sub Confirm_Btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Confirm_Btn.Click
If Sale_ListView.Items.Count > 0 Then
If MessageBox.Show("คุณต้องการยืนยันการขายสินค้า ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim sql As String = ""
Dim SqlParam As SqlParameter
sql = "INSERT INTO Sale (sale_no, sale_date, cus_no)"
sql &= "VALUES (@saleno, @saledate, @cusno)"
_cmd = New SqlCommand(sql, Conn)
SqlParam = New SqlParameter
SqlParam.ParameterName = "@saledate"
SqlParam.SqlDbType = SqlDbType.DateTime
SqlParam.Value = DateTimePicker1.Value
_cmd.Parameters.Add(SqlParam)
_cmd.Parameters.AddWithValue("saleno", lblS_ID.Text)
_cmd.Parameters.AddWithValue("cusno", txtM_ID.Text)
Try
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConnection
.Open()
End With
With _cmd
.CommandType = CommandType.Text
.CommandText = sql
.Connection = Conn
.ExecuteNonQuery()
End With
Catch ErrProcess As Exception
MessageBox.Show("ไม่สามารถเพิ่มข้อมูลได้ เนื่องจาก " & ErrProcess.Message, "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
MessageBox.Show("บันทึกการขายสินค้า เรียบร้อยแล้ว", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
_____________________________________________________________________________________________
ในส่วนนี้บันทึกเข้าไปในฐานข้อมูล "Sale" ได้ ไม่มีปัญหาคะ
และอีกปุ่มนึง ให้บันทึกลงในตาราง Sale_Detail คะ
_____________________________________________________________________________________________
Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
If Sale_ListView.Items.Count > 0 Then
If MessageBox.Show("คุณต้องการบันทึกการขายสินค้า ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim sql As String = ""
Dim i As Integer = 0
For i = 0 To Sale_ListView.Items.Count - 1
sql = "INSERT INTO Sale_Detail (sale_no, pro_no, amount, sale_price)"
sql &= " VALUES(" & (Sale_ListView.Items(i).SubItems(0).Text) & "," 'ในListView เป็นคอลัมภ์ เลขที่การขาย
sql &= (Sale_ListView.Items(i).SubItems(1).Text) & "," 'ในListView เป็นคอลัมภ์ รหัสสินค้า
sql &= (Sale_ListView.Items(i).SubItems(3).Text) & "," 'ในListView เป็นคอลัมภ์ จำนวน
sql &= (Sale_ListView.Items(i).SubItems(4).Text) & ")" 'ในListView เป็นคอลัมภ์ ราคาขาย
_cmd = New SqlCommand(sql, Conn)
With _cmd
.CommandType = CommandType.Text
.CommandText = sql
.Connection = Conn
.ExecuteNonQuery()
End With
Next
MessageBox.Show("บันทึกสินค้า เรียบร้อยแล้ว", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
__________________________________________________________________________________________
ปุ่มที่2 บันทึกลงไปในตาราง "Sale_Detail" ไม่ได้คะ ถึงจะแก้แล้ว ก็ยังขึ้น Error เหมือนเดิมคะ
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Sale_Detail_Product". The conflict occurred in database "Project", table "dbo.Product", column 'pro_no'. The statement has been terminated.
ไม่รู้จะแก้ยังไงดีแล้วคะ แก้มาหลายอาทิตย์แล้ว กับปัญหานี้
แก้ฐานข้อมูลหลายแบบแล้ว ก็ยังไม่ได้
ขอคำตอบจากพี่ๆผู้เชี่ยวชาญด้วยคะ
ลองดูหลายๆแบบ เผื่อจะออกซักที