การสร้างฟอร์มย่อยและรายงานย่อย (Subform/Subreport) จะเกิดขึ้นเมื่อการออกแบบข้อมูล 1 รายการ (Record) มีการสร้างข้อมูลย่อยอีกหลายรายการ เช่น การลงทะเบียนนักศึกษา 1 คนสามารถลงทะเบียนได้มากกว่า 1 วิชา หรือการเช่าหนังสือของผู้เช่า 1 รายสามารถเช่าหนังสือได้มากกว่า 1 เรื่อง หรือ การออกแบบใบเสร็จรับเงินให้กับผู้ซื้อสินค้า 1 รายซึ่งสามารถซื้อสินค้าได้มากกว่า 1 ชนิดหรือมากว่า 1 รายการ ฯลฯ
ตัวอย่าง
การออกแบบฟอร์มเพื่อบันทึกการจำหน่ายสินค้าหรือพิมพ์ใบเสร็จรับเงินให้กับลูกค้า โดย ใบเสร็จรับเงิน 1 ใบ ประกอบด้วย เลขที่ใบเสร็จ วันที่ขาย ชื่อลูกค้า และออกแบบรายการย่อยเพื่อจำหน่ายสินค้าและรายการ ประกอบด้วย รหัสสินค้า ชื่อสินค้า ราคา/หน่วย จำนวน ราคารวม
1) ออกแบบตาราง เพื่อนำมาออกแบบบนฟอร์มทั้งหมด 3 ตาราง โดยมีโครงสร้างดังต่อไปนี้
ตาราง goods
ตารางชื่อ invoice
ตารางชื่อ sale_goods
2) ออกแบบความสัมพันธ์ระหว่างตาราง
โดยการกำหนดให้ตารางชื่อ invoice เป็นฐานข้อมูล และกำหนดให้เขต ข้อมูล no (เลขที่ใบเสร็จ) มีคุณสมบัติเป็นคีย์หลัก เพื่อนำไปเชื่อมเขต ข้อมูล no (เลขที่) ในตารางชื่อ Sale_goods และกำหนดให้ตารางชื่อ goods เป็นฐานข้อมูล และกำหนดให้เขตข้อมูล g_code (รหัสสินค้า) มีคุณสมบัติเป็นคีย์หลัก เพื่อนำไปเชื่อมเขตข้อมูล no (เลขที่) ในตาราง ชื่อ sale_goods เช่นเดียวกัน โดยกำหนดความสัมพันธ์เป็นชนิดหนึ่งต่อกลุ่ม (one to many)
รูปที่8.1 แสดงการออกแบบความสัมพันธ์ระหว่างตาราง
3)ออกแบบตารางแบบสอบถาม (Queries) เพื่อเชื่อมความสัมพันธ์ระหว่างตาราง sale_goods และ goods และคำนวณราคารวมของสินค้าแต่ละรายการ
ขั้นตอนการออกแบบ
เลือกเมนูสร้าง (Create) เลือกออกแบบแบบสอบถาม (Design View)
เลือกตาราง sale goods และ goods
เลือกเขตข้อมูล no, g_code, g_name, price, num
ออกแบบเขตข้อมูลใหม่ชื่อ tot : [price] * [num] แล้วคลิกขวาเลือกคุณสมบัติ (Properties) และกำหนดป้ายคำอธิบาย (Caption) เป็น ราคารวม กำหนดรูปแบบ (Format) เป็น ฿#,###
บันทึกตารางแบบสอบถาม (Queries) ชื่อ Q_Sale
รูปที่ 8.2 แสดงการออกแบบแบบสอบถามการจำหน่ายสินค้าแต่ละรายการ
ขั้นตอนการออกแบบฟอร์ม
เลือกตาราง invoice เลือกเมนูสร้าง (Create) เลือก ตัวช่วยสร้างฟอร์ม (Form Wizard)
เลื่อกเขตข้อมูล invoice ทุกเขตข้อมูล
เลือกแบบสอบถามชื่อ Q_Sale เลือกเขตข้อมูล Q_Sale ทุกเขตข้อมูล
เลือกการแสดงข้อมูล (View your data) แบบ By invoice
เลือกประเภทฟอร์มแบบฟอร์มที่มีฟอร์มย่อย (Form with Subform(s))
เลือกรูปแบบฟอร์ม (Style) ตามต้องการ
ระบุชื่อฟอร์มหลัก และชื่อฟอร์มย่อย (subform) ตามต้องการ
เลือก ปรับเปลี่ยนการออกแบบฟอร์ม (Design View) เลือก เสร็จสิ้น (Finish)
จะเข้าสู่มุมมองออกแบบ ดับเบิลคลิกฟอร์มย่อย ลบเขตข้อมูล no (เลขที่) ออกจากฟอร์มย่อย เพราะจะมีการบันทึกอัตโนมัติทุกครั้งที่บันทึกรายการสินค้าบนฟอร์มย่อยแต่ละรายการ พร้อมปรับแต่งขนาด อักษร และรูปแบบตามความเหมาะสม (และกำหนดคุณสมบัติของกล่องข้อความ g_name, price และ tot เลือก เปิดใช้งาน=ไม่ใช่ เลือกล็อค=ใช่ เพราะจะแสดงตามการเชื่อมโยงระหว่างตารางและการคำนวณตามที่ออกแบบในแบบสอบถาม ห้ามแก้ไขหรือเปลี่ยนแปลง)
กรณีต้องการสรุปผลข้อมูลในฟอร์มย่อยให้ออกแบบในส่วนของส่วนท้ายของฟอร์ม ในตัวอย่างต้องการหาค่าผลรวมทั้งหมดของราคารวม (tot) โดยการเลือกเครื่องมือ กล่องข้อความ (Text Box) คลิกขวาเลือกคุณสมบัติ (Properties) เลือกแหล่งระเบียน ระบุ =sum([tot]) ก็จะได้ค่าผลรวมที่ต้องการ พร้อมบันทึกฟอร์มย่อย (Subform)
กลับมายังมุมมองฟอร์มหลักเพื่อกำหนดรูปแบบฟอร์มตามต้องการ พร้อมบันทึก จะได้ฟอร์มประเภทฟอร์มหลักที่มี ฟอร์มย่อย (Subform) ตามต้องการ
รูปที่ 8.3 แสดงขั้นตอนการออกแบบฟอร์มประเภทฟอร์มย่อย (Subform)
รูปที่ 8.4 แสดงตัวอย่างฟอร์มประเภทฟอร์มย่อย (Subform) หลังการออกแบบ