 |
|
Insert ข้อมูลในตางรางที่มี FK ไม่ได้ค่ะ VS2010 และ Access |
|
 |
|
|
 |
 |
|
สวัสดีค่ะหนูต้องการ Insert ตาราง Order ที่มี FK เป็น PK ของตารางอื่น ซึ่ง PK ของตางรางอื่นหนูใช้ ComboBox เลือกมา
หนูต้องทำยังไงค่ะ T_T คือมันไม่ย้อมให้ใสข้อมูลทำไงดีคะ
อันนี้คือตารางความสัมพันธ์ค่ะ จะได้เห็นภาพและเข้าใจง่ายขึ้น

อันนี้โค้ต Insert ลองใส่ข้อมูลโดยตรงแทน =@ ก็ไม่ได้
Code (VB.NET)
Private Sub InsertOrderTab1()
Dim insertSQL As String
con.ConnectionString = cnnStr
insertSQL = "INSERT INTO [Order](Order_ID,Cus_ID,Emp_ID) VALUES(@a,@b,@c)"
Try
con.Open()
cmd.Connection = con
cmd.CommandText = insertSQL
cmd.Parameters.AddWithValue("@a", TxtBox1.Text)
cmd.Parameters.AddWithValue("@b", ComboBox1.SelectValue.ToString())
cmd.Parameters.AddWithValue("@c", ComboBox2.SelectValue.ToString())
cmd.ExecuteNonQuery()
cmd.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
End Sub
อันนี้โค้ต ComboBox Code (VB.NET)
Private Function ComboBoxCnn()
con.ConnectionString = cnnStr
Dim sql As String = "SELECT * FROM Product"
Try
con.Open()
cmd.Connection = con
cmd.CommandText = sql
Dim dt As New DataTable
With ComboBox1
da.SelectCommand = cmd
da.Fill(dt)
.DataSource = dt
.DisplayMember = Pro_ID
.ValueMember = Pro_ID
End With
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
Return tmp
End Function
ลองแบบนี้แล้วแต่ยังไม่ได้ค่ะ
Code (VB.NET)
Private Sub InsertOrderTab1()
Dim insertSQL As String
con.ConnectionString = cnnStr
insertSQL = "INSERT INTO [Order](Order_ID,Emp_ID) VALUES('OD001','Emp007')"
Try
con.Open()
cmd.Connection = con
cmd.CommandText = insertSQL
cmd.ExecuteNonQuery()
cmd.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
End Sub
แต่ถ้า insert เฉพาะ Order_ID ทำได้ค่ะ เลยไม่เข้าใจว่าจะใส่ข้อมูลที่เราอ้างอิงมาจากตารางอื่นยังไง
Tag : .NET, Ms Access, VB.NET, VS 2010 (.NET 4.x)
|
ประวัติการแก้ไข 2015-09-28 18:50:27 2015-09-28 18:50:47 2015-09-28 18:52:12 2015-09-28 18:54:35
|
 |
 |
 |
 |
Date :
2015-09-28 18:34:16 |
By :
Aunsusu |
View :
1698 |
Reply :
6 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
T_T
แบบนี้ก็ลองแล้วค่ะไม่ได้
Code (VB.NET)
Private Sub InsertOrderTab1()
Dim insertSQL As String
tmpOrderDate = Date.Now.ToString("dd/MM/yyyy")
tmpRequstDate = DateTimePicker1.Value.ToString("dd/MM/yyyy")
con.ConnectionString = cnnStr
Dim b as string = "Emp0007"
Dim a as string = "a0002"
insertSQL = "INSERT INTO [Order] (Order_ID,Emp_ID)"
insertSQL &= "VALUES(@a , (SELECT Emp_ID FROM Employee WHERE Emp_ID = @b))"
Try
con.Open()
cmd.Connection = con
cmd.CommandText = insertSQL
cmd.Parameters.AddWithValue("@a", a)
cmd.Parameters.AddWithValue("@b", b)
cmd.ExecuteNonQuery()
cmd.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
End Sub
|
ประวัติการแก้ไข 2015-09-28 18:54:07 2015-09-28 20:06:07 2015-09-28 20:34:42
 |
 |
 |
 |
Date :
2015-09-28 18:49:42 |
By :
Aunsusu |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่มีใครเลย T_T
|
 |
 |
 |
 |
Date :
2015-09-28 22:19:49 |
By :
Aunsusu |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองไปรัน Query บน MS Access ดูมันทำงานได้หรือเปล่าครับ
|
 |
 |
 |
 |
Date :
2015-09-28 22:31:25 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่รู้ว่าหนูเข้าใจที่แอดมินบอกถูกไหม
คิอ ตาราง Order เป็นตารางที่มี Primary key ของตารางอื่นคะ หนูไม่ได้สร้าง คิวรี่
ประมาณนี้ค่ะ ตอนนี้โปรเจคหนูใกล้เสร็จแล้วเหลือแค่ Insert update delete ตารางที่มี PK ของตารางอื่นมาเป็น FK เท่านั้น
ช่วยหนูด้วยค่ะ
จากรูปข้างล่างหนู insert ตาราง Customer กับ Employee ได้ปกติ
แ่ตตาราง Order insert ได้เฉพาะฟิว Order_ID,Order_date,Require_date เท่านั้น
insert Cus_ID,Emp_ID ในตารางOrder ไม่ได้ค่ะ

|
ประวัติการแก้ไข 2015-09-29 00:08:48 2015-09-29 00:09:38
 |
 |
 |
 |
Date :
2015-09-28 23:35:28 |
By :
Aunsusu |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เย้ๆๆๆๆ ได้แล้วนะคะ ขอบคุณทุกคนมากๆ   
|
 |
 |
 |
 |
Date :
2015-09-29 03:54:06 |
By :
Aunsusu |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แนะนำให้ลง datagridview ครับ
|
 |
 |
 |
 |
Date :
2015-09-29 10:12:47 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|