การสร้าง drop-down list ให้ตาราง จุดประสงค์เพื่อให้ user เลือกใส่ข้อมูลได้แต่เฉพาะข้อมูลที่เรากำหนดเท่านั้น (กัน user พิมพ์มั่วว่างั้น)ต่อไปนี้คือตัวอย่างการสร้าง drop-down list ให้ ตารางอย่างง่ายครับ
ก่อนอื่นคลิก ดาวโหลด เพื่อเอาไฟล์ตัวอย่างเพื่อทำไปพร้อมกันครับ ^^
ดูจากรูป เรามีตารางอยู่ 2 ตาราง นั่นคือตารางของ employee(ลูกจ้าง) และตาราง department(แผนก) เชื่อมความสัมพันธ์กันแบบ one-to-many หมายถึง ลูกจ้าง 1 คนอยู่ได้ 1 แผนก และ 1 แผนกสามารถมีลูกจ้างได้หลายคน (หากท่านไม่เข้าใจขอให้กลับไปดูเรื่อง E-R Model ใหม่ครับ ^^)
จุดประสงค์ของเราหัวข้อนี้ คือ
1. เอารายชื่อของแผนกในตาราง department ไปเป็น drop-down list (ตัวเลือก) ให้ตาราง employee ที่ช่อง emp_dep
2. ที่ตาราง employee มีฟิล์หนึ่งชื่อ emp_prename (คำนำหน้าชื่อ) ซึ่งตรงช่องนี้สมควรใส่ได้แค่ นาย, นาง และ นางสาวเท่านั้น ถ้าปล่อยให้ user พิมพ์เอง คนไหนขยันก็จะพิมพ์ “นางสาว” คนไหนขี้เกียจหน่อยก็พิมพ์ “นส.” นึกสภาพดูครับตารางของท่านว่าจะมั่วขนาดไหน เราเลยต้องป้องกันกันหน่อย
เริ่มจากจุดประสงค์ข้อแรกก่อนครับ เอารายรหัสและชื่อแผนก ไปเป็นตัวเลือกให้ช่อง emp_dep
ขั้นตอนที่ 1 เอาเส้นความสัมพันธ์ที่เชื่อทั้งสองตารางไว้ออกก่อนครับ เพราะ Access ให้ความสำคัญกับความสัมพันธ์ของตารางมาก คือเราจะไม่สามารถแก้ไขคุณสมบัติของฟิล์ หรือช่องนั้นได้เลยหากยังมีการเชื่อมโยงความสัมพันธ์กับตารางอื่นอยู่ วิธีการเอาเส้นออกก็แค่เปิดเลือกที่ tool ความสัมพันธ์(Relationship) เปิดหน้าต่างความสัมพันธ์ ขึ้นมา
คลิกที่เส้นความสัมพันธ์ แล้วกดปุ่ม del (delete) แล้วกดยืนยัน เพียงเท่านี้เส้นความสัมพันธ์ก็จะหายไป เสร็จแล้วเราก็ปิดหน้าต่างความสัมพันธ์ไปก่อน (โปรแกรมจะถามว่าเซพมั้ย เราก็ตอบตกลงไป)
ขั้นตอนที่ 2 เปิดตาราง Employee ขึ้นมาในมุมมองออกแบบ เลือกที่คอลัมน์ “ชนิดข้อมูล” ของ ฟิลด์ emp_dep(คือฟิลด์ หรือ ช่องที่เราอยากให้มี drop-down list) จากนั้นเลือก Lookup Wizard
ขั้นตอนที่ 3 ทำตาม wizard ไปเรื่อย ๆ ครับ ผมจะอธิบายเป็นหน้า ๆ ไปละกันนะครับ
อันแรกคือเราจะเลือกตัวเลือกจากตารางหรือแบบสอบถาม ส่วนอันที่สองคือ เราจะพิมพ์ตัวเลือกเอง ให้เราเลือกอันแรก แล้วคลิกที่ปุ่มถัดไปครับ
เลือกตาราง department แล้วคลิก ถัดไป
ด้านขวามือคือฟิลด์ที่มีอยู่ทั้งหมดของตาราง department ฟิลด์ไหนบ้างที่เราต้องการให้แสดง ให้เลือกไปไว้ทางด้านขวา (เราสามารถเลือกแสดงได้มากกว่า 1 ฟิลด์ ครับ) อย่างในตัวอย่างนี้คือเราจะให้ drop-down list แสดง ฟิลด์ dep_id(รหัสแผนก) และ dep_name(ชื่อแผนก)
บางทีฟิล์ที่แสดงนั้น อาจจะเรียบลำดับกันสะเปะสะปะ ยากแก่การเลือก เราก็เรียงลำดับมันซักหน่อย ในตัวอย่างนี้คือผมให้เรียงลำดับ dep_id จากน้อยไปหามาก หรือใครจะบอกว่า dep_id ไม่สำคัญ อยากให้เรียกลำดับจากชื่อแผนกมากกว่า ก็เลือกชื่อ dep_name ได้เลยครับไม่ผิดกฎหมายแต่อย่างใด เสร็จแล้วคลิกถัดไป
ค่าเริ่มต้น ของ wizard มันจะติ๊กถูกที่ ซ่อนคอลัมน์หลัก ไว้นะครับ พูดง่าย ๆ คือมันจะซ่อน คอลัมน์ แรกไว้เสมอ เราไม่อยากให้ซ่อนก็เอาเครื่องหมายถูก ออก เสร็จแล้วก็จัดความกว้างของคอลัมน์ให้พอดีกับข้อมูลโดยเลื่อนที่หัวคอลัมน์ จนพอใจ แล้วคลิกที่ปุ่มถัดไป
เลือกว่าจะให้ฟิลด์ emp_dep(ฟิลด์ที่เรากำลังทำ drop-down list) ในตาราง employee เก็บค่าใดของฟิล์ในตาราง department ที่เราเลือกมาแสดง ในตัวอย่างนี่คือเราเลือกให้แสดง 2 คอลัมน์ แต่เราให้เก็บค่า dep_id ครับ(ส่วน dep_name นั้นเอาไว้โชว์ให้ user ดูเฉย ๆ) เพราะสองตารางนี้เชื่อมโยงกันด้วยรหัสแผนก ไม่ใช่ชื่อแผนก
ขั้นตอนสุดท้ายคือตั้งชื่อฟิลด์ ในตาราง employee ซะใหม่ ซึ่งผมไม่แนะนำให้เปลี่ยนนะครับ ชื่อยังใงก็ยังงั้นแหล่ะ ไม่ต้องแก้ เสร็จแล้วคลิกที่ปุ่ม เสร็จสิ้น
ขั้นตอนที่ 4 เมื่อตั้งค่าใน wizard เสร็จแล้วจะบังคับให้เซพตาราง พร้อมทั้งเชื่อมโยงความความสัมพันธ์ให้โดยอัตโนมัติ เราก็ทำการเข้าไปที่ หน้าต่างความสัมพันธ์อีกครั้ง ดับเบิัลคลิกที่เส้นความสัมพันธ์ เลือกบังคับให้มี Referential Integrity (ประมาณว่า ข้อมูลที่จะใส่ในฟิล์ emp_dep ของตาราง employee จะต้องมาจากฟิล์ dep_id ของตาราง department เท่านั้น) เพื่อบังคับไม่ให้ user คีย์ค่าอื่นเข้าไปเอง นอกเหนือจากข้อมูลที่มีอยู่ในตาราง deparment
เพียงเท่านี้ ท่านก็จะได้ตารางที่มี drop-down list สมใจ ที่สำคัญคือไม่ใช่ว่าตารางเท่านั้นจะมี drop-down list หากท่านนำตารางนี้ไปสร้างฟอร์ม ท่านจะพบว่าฟิลด์ emp_dep ที่ท่านนำไปสร้างฟอร์มก็จะมี drop-down list ด้วยโดยที่ท่านไม่ต้องเสียเวลามานั่งสร้างใหม่เลยล่ะครับ : )
ส่วนจุดประสงค์ข้อที่ 2 วิธีการใส่ตัวเลือกให้คำนำหน้าชื่อของฟิลด์ emp_prename ในตาราง employee ขอยกไปเป็น ตอนที่ 2 นะครับ รับรองมี tip เด็ด ๆ แน่นอน