ขอคำสั่ง insert ข้อมูล ตามเงื่อนไขที่กำหนดค่ะ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

06 ส.ค. 61 , 15:17:11
อ่าน 593 ครั้ง

มาลี

ความต้องการของหนูก็คือ ต้องการให้ insert ข้อมูลจากตารางหลัก (Tbl_A) จากไฟล์เป้าหมาย (Sample.mde) เข้ามาก่อน
จากนั้นจึง insert ข้อมูลจากตารางรองๆอีก 5 ตาราง (Tbl_B,C,D,E,F)  จากไฟล์เดียวกันเข้ามา โดยมีเงื่อนไขดังนี้

หากไม่พบตาราง (Tbl_A) จากไฟล์เป้าหมาย ก็ให้ขึ้น msg แจ้งเตือน
พร้อมกับยุติการ insert ข้อมูลจากตารางรองๆ ทั้งหมด และ ออกจากคำสั่ง

แต่หากพบตาราง (Tbl_A) จากไฟล์เป้าหมาย ก็ให้ทำการ insert ข้อมูล (Tbl_A )เข้ามาตามปกติ
พร้อมทั้ง insert ข้อมูลจากตารางรอง ตามเข้ามาทั้งหมด โดยที่แม้ว่า ตารางรอง บางตารางอาจไม่มีอยู่ ก็ไม่เป็นไร ให้ผ่านได้ โดยไม่ต้องขึ้น error

เบื้องต้น หนูได้ทดลองสร้างคำสั่งไว้ดังนี้

DoCmd.RunSQL "insert into Tbl_A´ select * from Tbl_A´ in ""C:\Sample.mde"""
DoCmd.RunSQL "insert into Tbl_B´ select * from Tbl_B´ in ""C:\Sample.mde"""
DoCmd.RunSQL "insert into Tbl_C´ select * from Tbl_C´ in ""C:\Sample.mde"""
DoCmd.RunSQL "insert into Tbl_D´ select * from Tbl_D´ in ""C:\Sample.mde"""
DoCmd.RunSQL "insert into Tbl_E´ select * from Tbl_E´ in ""C:\Sample.mde"""
DoCmd.RunSQL "insert into Tbl_F´ select * from Tbl_F´ in ""C:\Sample.mde"""

แต่การจะทำให้เป็นตามเงื่อนไขดังกล่าว หนูยังทำไม่ได้ค่ะ รบกวนขอคำแนะนำด้วยนะคะ

 

07 ส.ค. 61 , 02:40:27
ตอบกลับ #1

สันติสุข

ถ้าเอาแบบง่ายๆเร็วๆไม่เช็คมาก ก็ใช้ On Error Resume Next มาช่วย คำสั่งนี้จะบอกว่าถึงแม้โปรแกรมทำอะไรแล้วเกิด error ไม่ว่าจากอะไรก็ตาม (ไม่ใช่เฉพาะไม่มีเทเบิลต้นทาง) ก็ให้ข้ามไปทำคำสั่งถัดไปได้เลยโดยที่ไม่ต้องแสดง error ออกมา แต่ถ้าต้องการจะเช็คอย่างในกรณี Tbl_A ว่ามีก่อนหรือไม่ ก็ตรวจสอบกับ Err.Number ได้ว่าเกิด error หรือไม่ ถ้าเกิด มันจะไม่คืนค่า 0 ออกมาครับ

On Error Resume Next จะมีผลต่อคำสั่งไปเรื่อยจนกว่าจะกำหนด On Error เป็นอย่างอื่น ซึ่งท้ายของโค้ดนี้สั่งเป็น On Error Goto 0 ซึ่งหมายถึงให้ Access แสดง error ออกมาได้ตามปกติ พร้อมถามผู้ใช้ว่าจะให้ Debug โค้ดหรือไม่

โค๊ด: [Select]
    DoCmd.SetWarnings False
    On Error Resume Next
    DoCmd.RunSQL "insert into Tbl_A select * from Tbl_A in 'C:\Sample.mde'"
    If Err.Number = 0 Then
        DoCmd.RunSQL "insert into Tbl_B select * from Tbl_B in 'C:\Sample.mde'"
        DoCmd.RunSQL "insert into Tbl_C select * from Tbl_C in 'C:\Sample.mde'"
        DoCmd.RunSQL "insert into Tbl_D select * from Tbl_D in 'C:\Sample.mde'"
        DoCmd.RunSQL "insert into Tbl_E select * from Tbl_E in 'C:\Sample.mde'"
        DoCmd.RunSQL "insert into Tbl_F select * from Tbl_F in 'C:\Sample.mde'"
    End If
    DoCmd.SetWarnings True
    On Error GoTo 0
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

07 ส.ค. 61 , 06:42:41
ตอบกลับ #2

มาลี

 :shout: เย้..สำเร็จได้ผลตามที่ต้องการแล้วค่ะ

ขอขอบคุณอาจารย์นะคะ

 


บอร์ดเรียนรู้ Access สำหรับคนไทย