ข้ามไปยังเนื้อหา
การอ้างอิง Control ที่อยู่บนฟอร์มย่อยใน Navigation Form

บทความโดย: 9Expert Team

การอ้างอิง Control ที่อยู่บนฟอร์มย่อยใน Navigation Form

ปัญหาที่ผู้พัฒนาระบบด้วย Microsoft Access มักพบ คือเมื่อนำฟอร์มที่ทำงานได้ปกติไปจัดวางใน Navigation Form กลับปรากฏ InputBox ขอค่าวันที่ซ้ำอีกครั้ง สาเหตุเกิดจากโครงสร้างการอ้างอิง Control บนฟอร์มเดี่ยวและบน Subform มีรูปแบบแตกต่างกัน บทความนี้อธิบายหลักการและวิธีกำหนด Criteria ใหม่ ให้อ้างอิงถึง NavigationSubform อย่างถูกต้อง พร้อมข้อควรระวังในการเปิดใช้งานฟอร์มแยก

9Expert Team 1 นาที

การอ้างอิง Control ที่อยู่บนฟอร์มย่อยใน Navigation Form

หากใครเคยใช้ Navigation Form สำหรับสร้างฟอร์มหลักใน Microsoft Access เพื่อนำฟอร์มต่าง ๆ มาไว้ในฟอร์มเดียวกันโดยแยกเป็นแต่ละ Tab จะเห็นว่าง่ายดายมาก เพียงแค่ลากฟอร์มเข้ามาตรง AddNew ในมุมมอง Layout View ของ Navigation Form เราก็จะได้ฟอร์มย่อยมาอยู่บน Navigation Form แล้ว ดังรูป 

Navigation Form สามารถเพิ่ม SubForm ได้ด้วยการลากฟอร์มมายัง Tab AddNew

ซึ่งจากรูปจะเห็นว่ามีฟอร์ม FOrder ที่อยู่บน Navigation Form ด้วย โดยฟอร์ม FOrder นั้นมี TextBox 2 กล่อง รอให้ใส่ช่วงวันที่ที่ต้องการออกรายงานรายการใบสั่งซื้อตามช่วงเวลาที่ต้องการ
ซึ่งก่อนหน้านี้ได้ทำเป็นฟอร์มเดี่ยว ๆ ยังไม่นำมาอยู่บน Navigation Form และสามารถเปิดรายงานได้ตามปกติ ทั้งนี้ ค่า Parameter ที่กำหนดที่ Query เพื่อหารายการสั่งซื้อที่สั่งซื้อระหว่างวันที่ที่ต้องการ
ทำได้โดยใส่ Criteria ด้วยคำสั่ง Between [Forms]![FOrder]![txtFromDate] And [Forms]![FOrder]![txtToDate]
ดังรูป

การกำหนด Criteria ให้กับฟอร์มใน Microsoft Access

ซึ่งถ้าเราเปิดฟอร์ม FOrder เดี่ยว ๆ โดยไม่ผ่าน Navigation Form ฟอร์ม Forder จะยังใช้งานได้ตามปกติ โดยการอ้างอิง Control บนฟอร์มเดี่ยว ๆ นั้น โครงสร้างการอ้างอิง คือ [Forms]![ชื่อฟอร์ม]![ชื่อ Control]

แต่หากใช้งาน FOrder ผ่าน Navigation Form จะมี InputBox แสดงขึ้นมาให้ใส่ค่า Parameter ดังรูป 

การกำหนด Parameter แบบเดิมหากนำมาอ้างอิงถึง Control บน Subform ใน Navigation Form จะไม่สามารถทำงานได้

ซึ่งถ้าไม่ต้องการให้มี InputBox ดังกล่าวปรากฎขึ้น เนื่องจากไม่รู้จักค่า Parameter เราจะต้องอ้างอิง control ที่อยู่บน Subform ใน Navigation Form ใหม่
โดย Criteria เป็น Between [Forms]![NavigationFrm]![NavigationSubform].[Form]![txtFromDate] and [Forms]![NavigationFrm]![NavigationSubform].[Form]![txtToDate]
ดังรูป

รูปแบบการกำหนด Parameter ใน Subform ที่อยู่บน Navigation Form

จากรูป เราจะมาดูโครงสร้างของการอ้างอิง Control ที่อยู่บน Subform ใน Navigation Form กัน ดังรูปค่ะ

การกำหนด Parameter จะต้องทราบชื่อของ Subform ด้วย

ชื่อ SubForm นั้น เป็น SubForm ใน Navigation Form ค่ะ
ทั้งนี้ หลังจากเราเปลี่ยนการอ้างอิง Control ใหม่แล้ว เมื่อเราเปิดฟอร์ม FOrder ลำพัง จะมี InputBox ให้ใส่ค่า Parameter ใหม่นะคะ
เนื่องจากการอ้างอิง Control กรณีฟอร์มเดี่ยว ๆ กับ Control ที่อยู่บน SubForm ใน Navigation Form นั้นไม่เหมือนกันตามทีกล่าวไปแล้วค่ะ

หลักสูตรที่เกี่ยวข้อง

บทความที่เกี่ยวข้อง