การใช้ตัวควบคุม DataCombo และ DataList
ตัวควบคุม DataCombo และ DataList จะคล้ายกันมากกับกล่องรายการมาตรฐานและตัวควบคุมกล่องคำสั่งผสม แต่มีความแตกต่างที่สำคัญบางประการที่ทำให้สามารถปรับเปลี่ยนได้อย่างมากและมีประโยชน์ในแอปพลิเคชันฐานข้อมูล ตัวควบคุมทั้งสองสามารถเติมข้อมูลโดยอัตโนมัติตามเขตข้อมูลฐานข้อมูลที่ผูกตัวควบคุมเหล่านี้ไว้ นอกจากนี้ ยังสามารถเลือกที่จะส่งฟิลด์ที่เลือกไปยังตัวควบคุมข้อมูลที่สองได้ ทำให้เหมาะสำหรับการสร้างแอปพลิเคชัน "ตารางการค้นหา"
การใช้งานที่เป็นไปได้
1. ในฐานข้อมูลเชิงสัมพันธ์ ใช้ข้อมูลจากตารางหนึ่งเพื่อจัดเตรียมค่าที่จะป้อนลงในตารางที่สอง (ที่เกี่ยวข้อง) ตัวอย่างเช่น ในฐานข้อมูลสินค้าคงคลัง ชื่อของซัพพลายเออร์จะถูกจัดเก็บไว้ในตาราง และซัพพลายเออร์แต่ละรายจะมีตัวระบุที่ไม่ซ้ำกัน ตารางอื่นที่แสดงผลิตภัณฑ์ใช้ตัวระบุเหล่านี้เพื่อระบุว่าซัพพลายเออร์รายใดเป็นผู้จัดหาผลิตภัณฑ์ คุณสามารถใช้ตัวควบคุม DataList เพื่อแสดงชื่อของซัพพลายเออร์ในขณะที่ (มองไม่เห็น) ให้ตัวระบุของซัพพลายเออร์ไปยังตารางผลิตภัณฑ์
2. อนุญาตให้ผู้ใช้จำกัดการค้นหาให้แคบลงโดยเลือกเกณฑ์จากรายการแบบเลื่อนลง ตัวอย่างเช่น แอปพลิเคชันฐานข้อมูลการรายงานการขายสามารถใช้ตัวควบคุม DataList เพื่อให้ผู้ใช้เลือกรัฐหรือภูมิภาคการขาย เมื่อทำการเลือกแล้ว การเลือกจะถูกส่งต่อไปยังส่วนควบคุมข้อมูลที่สองโดยอัตโนมัติ ซึ่งมีหน้าที่ค้นหาบันทึกการขายสำหรับพื้นที่ที่เลือก
เช่นเดียวกับการควบคุมภายในที่สอดคล้องกัน ข้อแตกต่างหลักระหว่างตัวควบคุม DataList และ DataCombo ก็คือ ตัวควบคุม DataCombo จะมีกล่องข้อความที่สามารถแก้ไขเนื้อหาได้
สำหรับ คำอธิบายเกี่ยวกับความสามารถของตัวควบคุม DataList และ DataCombo ในการเข้าร่วมตารางฐานข้อมูล โปรดดูที่ "การรวมสองตารางโดยใช้ตัวควบคุม DataCombo และ DataList" หากต้องการสร้างแอปพลิเคชันฐานข้อมูลอย่างง่ายที่ใช้ตารางที่เชื่อมโยง โปรดดู "การสร้างแอปพลิเคชัน DataCombo แบบง่าย"
คุณสมบัติการควบคุมที่น่าสังเกต
คุณสมบัติที่สำคัญบางประการของตัวควบคุม DataList และ DataCombo ได้แก่:
โปรดทราบว่าคุณสมบัติ DataFormat ของตัวควบคุม DataCombo เป็นคุณสมบัติ Extender ดังนั้นจึงมองเห็นได้เสมอบนแผ่นคุณสมบัติและสามารถตั้งค่าเป็นโค้ดได้ อย่างไรก็ตาม ตัวควบคุม DataCombo จะจัดรูปแบบเฉพาะรายการบนสุดในรายการเท่านั้น สิ่งนี้อาจมีความสำคัญน้อยกว่าสำหรับผู้ใช้ที่เห็นรายการบนสุดที่จัดรูปแบบแล้ว และสามารถเลือกจากรายการที่ยังไม่ได้จัดรูปแบบได้ รายการที่จัดรูปแบบอาจทำให้ผู้ใช้เข้าใจผิดคิดว่ารายการได้รับการจัดรูปแบบก่อนที่จะป้อนลงในฐานข้อมูล ด้วยเหตุผลเหล่านี้ ขอแนะนำไม่ให้ตั้งค่าคุณสมบัติ DataFormat เมื่อใช้ตัวควบคุม DataCombo
รายละเอียด สำหรับบทช่วยสอนทีละขั้นตอนที่สาธิตการใช้คุณสมบัติ BoundText โปรดดู "การสร้าง DataGrid ด้วยตัวควบคุม DataList ที่เชื่อมต่อ" สำหรับรายการคุณสมบัติและวิธีการทั้งหมดของการควบคุมเหล่านี้ โปรดดูที่ "การควบคุม DataList" และ "การควบคุม DataCombo"
เชื่อมต่อสองตารางโดยใช้ตัวควบคุม DataCombo และ DataList
คุณลักษณะที่โดดเด่นของตัวควบคุม DataCombo และ DataList คือความสามารถในการเข้าถึงตารางที่แตกต่างกันสองตาราง และเชื่อมโยงข้อมูลจากตารางแรกไปยังเขตข้อมูลในตารางที่สอง ซึ่งทำได้โดยใช้แหล่งข้อมูลสองแหล่ง (เช่น ตัวควบคุม ADOData หรือสภาพแวดล้อมข้อมูล)
ตารางเชิงสัมพันธ์และค่า "ไม่เป็นมิตร"
ในฐานข้อมูลเชิงสัมพันธ์ ไม่ใช่ข้อมูลทั้งหมดสำหรับการนำกลับมาใช้ใหม่จะถูกจัดเก็บไว้ในหลายแห่ง ข้อมูลส่วนใหญ่นี้ถูกจัดเก็บไว้ในชุดระเบียนที่ประกอบด้วยหลายฟิลด์ ในบรรดาฟิลด์เหล่านี้จะมีฟิลด์ "ตัวระบุ" ที่ระบุชุดระเบียนโดยไม่ซ้ำกัน ตัวอย่างเช่น ฐานข้อมูล Biblio ที่ Visual Basic จัดเตรียมไว้จะจัดเก็บชื่อของบริษัทผู้จัดพิมพ์หลายแห่งในตารางที่เรียกว่าผู้เผยแพร่ ตารางนี้มีหลายช่อง เช่น ที่อยู่ เมือง รหัสไปรษณีย์ และหมายเลขโทรศัพท์ แต่เพื่อความเรียบง่าย จึงพิจารณาเฉพาะฟิลด์สำคัญสองฟิลด์ของตารางนี้ ชื่อและ PubID เท่านั้น ช่องชื่อจะเก็บชื่อของผู้จัดพิมพ์ ในขณะที่ช่อง PubID จะเก็บค่าที่ค่อนข้าง "ไม่เป็นมิตร" เช่น ตัวเลขหรือรหัส แต่ค่าที่ไม่เป็นมิตรนี้มีความสำคัญเนื่องจากสามารถระบุผู้จัดพิมพ์ได้โดยไม่ซ้ำกันและทำหน้าที่เป็นวิธีในการเชื่อมโยงชุดระเบียนทั้งหมด นอกจากนี้ ค่านี้จะถูกจัดเก็บไว้ในชุดระเบียนหลายชุดในตารางที่สอง
ชื่อของตารางที่สองคือ Titles และชุดบันทึกแต่ละชุดประกอบด้วยข้อมูล เช่น ชื่อเรื่อง ปีที่พิมพ์ หมายเลขหนังสือมาตรฐานสากล (ISBN) เป็นต้น ชื่อของหนึ่งในฟิลด์เหล่านี้คือ PubID ชื่อของฟิลด์นี้จะเหมือนกับฟิลด์ที่เกี่ยวข้องในตารางผู้จัดพิมพ์ เนื่องจากฟิลด์นี้จะเก็บค่าที่เชื่อมโยงชื่อนี้กับผู้จัดพิมพ์รายใดรายหนึ่ง
วิธีแก้ไขที่เป็นไปได้นี้ทำให้เกิดปัญหาเล็กน้อย: เนื่องจากแอปพลิเคชันฐานข้อมูลที่อนุญาตให้ผู้ใช้แทรกชื่อใหม่ ผู้ใช้จะต้องป้อนจำนวนเต็มที่ระบุผู้จัดพิมพ์ หากผู้ใช้สามารถจำตัวระบุเฉพาะของผู้จัดพิมพ์แต่ละรายได้ก็จะยังคงเป็นไปได้ แต่หากในด้านหนึ่งผู้ใช้สามารถเห็นชื่อของผู้จัดพิมพ์ได้และในทางกลับกันค่าที่เกี่ยวข้องจะถูกเก็บไว้ในฐานข้อมูล จะดูสะดวกขึ้น. ตัวควบคุม DataList และ DataCombo สามารถแก้ไขปัญหานี้ได้อย่างง่ายดาย
สองแหล่งข้อมูล สามฟิลด์ ไม่มีการเข้ารหัส
ตัวควบคุม DataList และ DataCombo ใช้แหล่งข้อมูลสองแหล่งเพื่อแก้ไขปัญหานี้ ในขณะที่แสดงเฉพาะชื่อของผู้จัดพิมพ์ (จากตารางผู้เผยแพร่) ตัวควบคุม DataList หรือ DataCombo จะเขียนเฉพาะค่าของเขตข้อมูล PubID ลงในตารางชื่อเรื่องเท่านั้น ผ่านหน้าต่างคุณสมบัติ ตั้งค่า RowSource เป็นแหล่งข้อมูลที่ให้ข้อมูลที่จะเขียน (เช่น ตารางผู้เผยแพร่) จากนั้นตั้งค่าคุณสมบัติ DataSource เป็นแหล่งข้อมูลที่จะเขียนข้อมูล (เช่น ตาราง Titles) สุดท้าย ให้ตั้งค่าคุณสมบัติ DataField, ListField และ BoundColumn รูปภาพต่อไปนี้สาธิตวิธีการกำหนดแหล่งข้อมูลสองแห่ง (ในรูปแบบของตัวควบคุมข้อมูลสองชุด) และสามฟิลด์ให้กับตัวควบคุม DataCombo:
โดยสรุป คุณสมบัติ ListField จะกำหนดว่าเขตข้อมูลใดจะแสดงโดยตัวควบคุม ในกรณีนี้คือชื่อของผู้จัดพิมพ์ ในทางกลับกัน คุณสมบัติ BoundColumn จะกำหนดว่าฟิลด์ใดในตาราง Publishers ที่ให้ค่าที่จำเป็นจริงแก่ตาราง Title โปรดทราบว่าช่อง PubID ในตารางผู้เผยแพร่ไม่สามารถ (และไม่ควร) แก้ไขได้ แต่ค่าในช่อง PubID จะถูกเขียนลงในช่องที่ระบุโดยคุณสมบัติ DataField แทน ในตัวอย่างนี้ แอตทริบิวต์นี้คือช่อง PubID ในตาราง Titles
ตารางต่อไปนี้แสดงภาพรวมของคุณสมบัติเหล่านี้และวิธีการใช้งาน
โปรดทราบว่า ตัวควบคุม DataList และ DataCombo สามารถใช้กับตัวควบคุมข้อมูลเดียวได้ เพื่อให้บรรลุเป้าหมายนี้ คุณสามารถตั้งค่าคุณสมบัติ DataSource และ RowSource ให้เป็นตัวควบคุมข้อมูลเดียวกัน และตั้งค่าคุณสมบัติ DataField และ BoundColumn ให้เป็นเขตข้อมูลเดียวกันในชุดระเบียนของตัวควบคุมข้อมูล ในกรณีนี้ รายการจะถูกเติมด้วยค่า ListField จากชุดระเบียนเดียวกันที่กำลังอัปเดต หากมีการระบุคุณสมบัติ ListField แต่ไม่ได้ตั้งค่าคุณสมบัติ BoundColumn BoundColumn จะถูกตั้งค่าเป็นฟิลด์ ListField โดยอัตโนมัติ
รายละเอียด หากคุณต้องการสร้างแอปพลิเคชันฐานข้อมูลอย่างง่ายทีละขั้นตอนโดยใช้ตัวควบคุม DataCombo โปรดดู "การสร้างแอปพลิเคชัน DataCombo แบบง่าย"
-