delete subrecord
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 350   8
URL.หัวข้อ / URL
delete subrecord

เมื่อเราลบ parent record แล้วให้ทำการลบ subrecord 
ที่สร้าง 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
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0656s