กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
425 8
URL.หัวข้อ /
URL
delete subrecord
เมื่อเราลบ parent record แล้วให้ทำการลบ subrecord
ที่สร้าง relationship ไว้ ด้วยอัตโนมัติ ได้หรือเปล่าคะ
คือได้สร้าง 1 mainform มี 4 subform
อยากลบ current record ที่ตัวแม่ แล้วลูกๆ ทั้ง 4 ก็ม่องด้วย
ทำได้หรือเปล่าคะ
ขอบคุณค่ะ
ที่สร้าง relationship ไว้ ด้วยอัตโนมัติ ได้หรือเปล่าคะ
คือได้สร้าง 1 mainform มี 4 subform
อยากลบ current record ที่ตัวแม่ แล้วลูกๆ ทั้ง 4 ก็ม่องด้วย
ทำได้หรือเปล่าคะ
ขอบคุณค่ะ
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R01002
ทำได้ครับ
มี 2 วิธี
1. วางแผนก่อนออกแบบความสัมพันธ์ของแต่ละตาราง ก็ให้เลือก Cascade Delete Related Records ตอนที่เลือกประเภทของความสัมพันธ์ โดยต้องเลือก Enforce Referential Integrity ก่อน แล้งถึงจะเลือกตัวเลือกที่ว่านี้ได้ครับ
2. ถ้าทำหลังจากที่มีการเพิ่มข้อมูลไว้แล้ว ก็ต้องอาศัยโค้ดเข้าช่วยครับ โดยให้อ้างอิงตัว ID ที่เชื่อมกัน ดังนี้ครับ
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "DELETE * " _
& "FROM ตารางเป้าหมายที่1 " _
& "WHERE ID =" & Me.ID
dbs.Execute "DELETE * " _
& "FROM ตารางเป้าหมายที่2 " _
& "WHERE ID =" & Me.ID
ไล่ไปเรื่อยๆ ครับ
2 @R01004
ขอบพระคุณค่ะ
แล้วจะกลับมารายงานผลนะคะ
ว่าจะไม่รบกวนท่านอาจารย์แล้วนา แต่ก็จนได้
หาคนเชี่ยวชาญที่ใจดีๆ มีน้อยค่ะ
3 @R01009
ลองทำแล้วค่ะ ม่ายได้
มันบอกว่า run-time error "too few parameters"
ต้องใส่อะไรเพิ่ม ตรงไหน อย่างไร ทำต่อไม่ถูกแล้วค่ะ
ขอบพระคุณค่ะ
4 @R01011
ขอดูโค้ดคร่าวๆ หน่อยครับ จะได้ดูให้ว่า SQL มันไม่สมบูรณ์ตรงไหนครับ
5 @R01016
นี่ค่ะ code
==================================
Private Sub clear_Click()
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "DELETE * " _
& "FROM tblStayingMember " _
& "WHERE ID =" & Me.Stud_id
dbs.Execute "DELETE * " _
& "FROM tblcheckIn " _
& "WHERE ID =" & Me.Stud_id
End Sub
====================================
6 @R01017
ลองตรวจดูว่ามีฟีลด์ชื่อ ID ในตารางเป้าหมายหรือไม่ด้วยครับ และเป็น Number หรือ Text ด้วย
ถ้า Stud_ID เป็น Text ลองเปลี่ยนเป็น
Private Sub clear_Click()
Dim dbs As Database
...
Set dbs = CurrentDb
dbs.Execute "DELETE * " _
& "FROM tblcheckIn " _
& "WHERE Stud_id ='" & Me.Stud_id & "'"
...
End Sub
ดูครับ
7 @R01020
ใช่แล้วค่ะ stud_id เป็น text
แก้ไขแล้ว ลองกดปุ่มแล้ว ok ค่ะ ไม่ฟ้อง error ใดๆ
และก็ไม่แสดงผลใดๆ ด้วย
แต่ก็ได้ทำวิธีที่ 1 (enforce referential integrity แบบ cascade delete)
แล้วค่ะ แต่ก็อยากรู้เหมือนกันว่า code ชุดนี้ ที่ถูกต้องทำงานอย่างไร
ขออนุญาต attach file ไปให้พิจารณานะคะ
ขอบพระคุณค่ะ
8 @R01021
เผื่อว่ามีคนติดตามอ่านกระทู้นี้ และอยากรู้ว่า สุดท้ายที่สำเร็จ ทำอย่างไร
ท่านอาจารย์สุภาพได้ช่วยเพิ่ม code ให้ดังนี้ค่ะ
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "DELETE * " _
& "FROM ตารางเป้าหมาย1 " _
& "WHERE id ='" & Me.id & "'"
dbs.Execute "DELETE * " _
& "FROM ตารางเป้าหมาย2 " _
& "WHERE id ='" & Me.id & "'"
' Delete a current record on the main form
DoCmd.RunCommand acCmdDeleteRecord
Me.ตารางเป้าหมาย1.Requery
Me.ตารางเป้าหมาย2.Requery
dbs.Close
Set dbs = Nothing
End Sub
Time: 0.1463s