บทที่ 8

การสร้างฟอร์มย่อย (Subform)

การสร้างฟอร์มย่อยและรายงานย่อย (Subform/Subreport)

การสร้างฟอร์มย่อยและรายงานย่อย (Subform/Subreport)

การสร้างฟอร์มย่อยและรายงานย่อย (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) หลังการออกแบบ