นำไปใช้กับ
Access for Microsoft 365 Access 2021 Access 2019

เลือกหัวข้อใดๆ ด้านล่างเพื่อเรียนรู้เกี่ยวกับการจัดการบริษัทใน Northwind Developer Edition 

หมายเหตุ: หน้านี้ถูกอ้างอิงใน Access Developer Showcase Edition

ใน Northwind Starter Edition ลูกค้า เป็นบริษัทประเภทเดียว ใน Developer Edition เราได้ขยายให้รวมลูกค้าผู้จัดส่ง และผู้จําหน่าย 

เรายังขยาย ผลิตภัณฑ์ ให้รวมผู้จําหน่ายหลายรายสําหรับผลิตภัณฑ์   

แต่ละบริษัทสามารถมีได้เพียงชนิดเดียวเท่านั้น:ลูกค้า, ผู้จัดส่ง หรือผู้ขาย กรณีธุรกิจสําหรับเมื่อสามารถเปลี่ยนชนิดบริษัทได้มีการอธิบายไว้ในส่วน frmCompanyDetail ของบทความนี้ '

ชนิดบริษัทและตําแหน่งที่ใช้ 

  • ลูกค้าสําหรับการสั่งซื้อ

  • ผู้จัดส่งสําหรับการสั่งซื้อ

  • ผู้ขายสําหรับใบสั่งซื้อ

  • ผู้จําหน่ายสําหรับผลิตภัณฑ์

นอกจากนี้ บริษัทในเวอร์ชัน Northwind Developer สามารถมีที่ติดต่อได้หลายรายการ '

บริษัทใน Ribbon

การเลือกบริษัทจาก Ribbon จะแสดงบริษัทใน Northwind ในรายการ frmCompanyList 

รายการบริษัท - frmCompanyList

ในเวอร์ชันของนักพัฒนา Northwind frmCompanyList คือฟอร์มแยก ฟอร์มแยกทําให้คุณเห็นข้อมูลสองมุมมองในเวลาเดียวกัน มุมมองฟอร์ม และมุมมองแผ่นข้อมูล นอกจากนี้ยังมีหัวกระดาษและท้ายกระดาษ  ในการใช้งานนี้ เราจะไม่แสดงมุมมองฟอร์ม เมื่อไม่แสดงมุมมองฟอร์ม เราจะมีแผ่นข้อมูลที่มีส่วนหัวและส่วนท้าย  

นี่คือวิธีที่เราบรรลุเป้าหมายนี้:  

ใน frmCompanyList แถบตัวแยกระหว่างส่วนหัวและแผ่นข้อมูลจะไม่สามารถมองเห็นได้ แถบ ตัวแยกฟอร์มแยกของ คุณสมบัติฟอร์มถูกตั้งค่าเป็น ไม่ใช่ ดังนั้น จึงซ่อนมุมมองฟอร์ม 

ฟอร์มแยกและฟอร์มแผ่นข้อมูลจะเหมือนกับเวิร์กชีต Excel ซึ่งสนับสนุนการกรองและการเรียงลําดับ และคุณสามารถแสดง ซ่อน หรือย้ายเขตข้อมูลหรือคอลัมน์ได้ นอกจากนี้ ยังสามารถรวมยอดคอลัมน์ได้อีกด้วย 

ส่วนหัวกระดาษและท้ายกระดาษของฟอร์มแยกช่วยให้คุณสามารถใช้ปุ่มคําสั่ง รูปภาพ ข้อความ(ป้ายชื่อ) และตัวควบคุมฟอร์มการเข้าถึงอื่นๆ ที่คุณต้องการปรับปรุงประสบการณ์การใช้งานของผู้ใช้ เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับฟอร์มและฟอร์มแยก คุณสามารถเริ่มต้นได้ที่นี่ แผ่นข้อมูลจะไม่แสดงส่วนหัวและส่วนท้าย

เรียนรู้เพิ่มเติมผ่าน บทนําสู่ฟอร์ม และ สร้างฟอร์มแยก  '

แบบฟอร์ม รายการบริษัท สนับสนุนการดําเนินการห้าอย่างนี้:

  • ใช้ตัวกรองแบบกําหนดเองที่สร้างไว้ล่วงหน้า การกรองตามความต้องการ หรือทั้งสองอย่าง

  • แสดง/ซ่อนเขตข้อมูล

  • สร้างป้ายชื่อ

  • แสดงตัวกรอง

  • เพิ่มบริษัทใหม่

ดับเบิลคลิกที่ใดก็ได้ในแถวรายละเอียดเพื่อเปิดฟอร์ม รายละเอียดบริษัท (ไม่ใช่แค่บน ID เหมือนกับในแบบฟอร์มอื่นๆ)  '

ตัวกรองที่สร้างไว้ล่วงหน้าและการกรองตามความต้องการ

แบบฟอร์ม frmCompanyList เต็มไปด้วยโอกาสที่จะกรอง บริษัท ใน Northwind  ที่ด้านบนของหน้าจอ คุณสามารถกรองโดยใช้ปุ่มตัวเลือกเหล่านี้:

  • บริษัททั้งหมด (ค่าเริ่มต้น)

  • ลูกค้าเท่านั้น

  • เฉพาะผู้ขนส่งสินค้าเท่านั้น

  • ผู้ขายเท่านั้น

นอกจากนี้ ตัวเลือกการกรองที่มีอยู่แล้วภายในแผ่นข้อมูลจะพร้อมใช้งานตามต้องการ ตัวกรองใดๆ ที่ใช้กับฟอร์ม รายการบริษัท (ที่สร้างไว้ล่วงหน้าหรือตามความต้องการ) จะถูกส่งผ่านและนําไปใช้กับ frmCompanyDetail เมื่อเปิดขึ้น  

เมื่อต้องการส่งผ่านตัวกรองจากฟอร์มหนึ่งไปยังอีกฟอร์มหนึ่ง ก่อนอื่น คุณต้องล้างสตริงตัวกรองของฟอร์มเพื่อให้มีเฉพาะชื่อเขตข้อมูลเท่านั้น ดูโค้ดโมดูล Open_frmCompanyDetail สําหรับคําอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีการทําสิ่งนี้และใน frmCompanyDetail ที่ข้อคิดเห็นสําหรับ Form_Load เพื่อดูว่ามันถูกนําไปใช้อย่างไร

เราส่งข้อมูลตัวกรองไปยังฟอร์มรายละเอียดบริษัทผ่านคุณสมบัติ OpenArgs ของฟอร์มแทนที่จะเปิดฟอร์มด้วยเงื่อนไขที่  คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ OpenArgs ได้ที่นี่

แสดง/ซ่อนเขตข้อมูล

เลือก แสดง/ซ่อนเขตข้อมูล เพื่อเปิดกล่องโต้ตอบที่มีรายการของเขตข้อมูลที่พร้อมใช้งานทั้งหมด คุณสามารถเลือกหรือยกเลิกการเลือกคอลัมน์อย่างน้อยหนึ่งคอลัมน์ได้ เค้าโครงที่เลือกจะยังคงอยู่จากเซสชันหนึ่งไปยังอีกเซสชันหนึ่งจนกว่าจะมีการปรับใช้แอปพลิเคชันเวอร์ชันใหม่ ดู แสดงหรือซ่อนคอลัมน์ในแผ่นข้อมูล 

สร้างป้ายชื่อ

ปุ่ม สร้างป้ายชื่อ จะเปิดตัวช่วยสร้างป้ายชื่อ Access เรียนรู้เพิ่มเติมเกี่ยวกับตัวช่วยสร้างป้ายผนึกที่นี่: สร้างป้ายจ่าหน้าจดหมายใน Access 

เปิดรายละเอียดบริษัท

ดับเบิลคลิกที่ใดก็ได้ในแถวรายละเอียดเพื่อเปิด frmCompanyDetail

คลิกที่เขตข้อมูล ID (ตั้งค่าเป็นไฮเปอร์ลิงก์) หรือดับเบิลคลิกที่เขตข้อมูลอื่นใดในแถวรายละเอียดเพื่อเปิด frmCompanyDetail กับ บริษัท ที่เลือก และส่งตัวกรองแบบฟอร์มใดๆ ที่ใช้กับรายการบริษัทเพื่อ frmCompanyDetail

รายละเอียดบริษัท - frmCompanyDetail

ในตอนแรก frmCompanyDetail อาจดูค่อนข้างง่าย  อย่างไรก็ตาม มันไม่ใช่  ในโค้ดเบื้องหลังแบบฟอร์มเกิดขึ้นมากมาย!  แบบฟอร์ม จะเน้นการดําเนินการและฟีเจอร์ต่อไปนี้

  • ปุ่มคําสั่งและลิงก์หลายรายการ

    • เพิ่มบริษัท

    • รายการบริษัทในอีเมล

    • แสดงตัวกรอง

    • ลบบริษัท

    • เปิดแผนที่โดยยึดตามที่อยู่

    • เปิดเว็บไซต์จากไฮเปอร์ลิงก์

  • ยกเลิกหรือบันทึกการดําเนินการในโหมดเพิ่ม/แก้ไข

  • กฎทางธุรกิจที่จะควบคุมว่าเมื่อใดที่สามารถเปลี่ยนชนิดบริษัทได้

  • การตรวจสอบความสมบูรณ์ของการอ้างอิงก่อนเหตุการณ์การลบ '

เหตุการณ์ Form_Load มีการดําเนินการต่อไปนี้:

  • ใช้หลายพารามิเตอร์ที่ส่งผ่านไปยังฟอร์มผ่าน OpenArgs และฟังก์ชัน Northwind StringToDictionary แบบกําหนดเอง

  • ใช้คุณสมบัติฟอร์ม OpenArgs เพื่ออนุญาตให้ผู้ใช้เพิ่ม บริษัท ใหม่ขณะทํา การสั่งซื้อ

  • ใช้เทคนิค GoToRecord เพื่อเพิ่มบริษัทใหม่

  • ใช้เทคนิค SearchForRecord เพื่อย้ายไปยัง บริษัทที่เลือกบน frmCompanyList

  • ตัวเลือกการโยงหัวข้อ/การดําเนินการตามเงื่อนไข (ดู เหตุการณ์ Form_Load)

    • ตัวเลือกที่ 1 - คําชี้แจงกรณี

    • ตัวเลือกที่ 2 - ซ้อนกัน ถ้าเป็นอย่างอื่น

    • ตัวเลือกที่ 3 – ElseIf

    • ตัวเลือกที่ 4 - If Else และ ElseIf ที่ซ้อนกัน '

ในเหตุการณ์ Form_Current สิ่งต่อไปนี้จะเกิดขึ้น: 

  • เปลี่ยนคําอธิบายเฉพาะของฟอร์มย่อยและวัตถุต้นฉบับในขณะรันไทม์โดยการเรียก ManageFormOptions() ย่อย Subroutine นี้ถูกเรียกจากหลายตําแหน่งในแบบฟอร์มนี้  '

ยกเลิกหรือบันทึกการดําเนินการเมื่ออยู่ในโหมดเพิ่มหรือแก้ไข 

แบบฟอร์ม Access ของเราถูกผูกไว้  สิ่งนี้หมายความว่าอย่างไร  จาก Microsoft: "ฟอร์ม 'ผูก' คือฟอร์มที่เชื่อมต่อโดยตรงกับแหล่งข้อมูล เช่น ตารางหรือคิวรี และสามารถใช้เพื่อใส่ แก้ไข หรือแสดงข้อมูลจากแหล่งข้อมูลนั้นได้"

ด้วยฟอร์มที่ถูกผูก Access ไม่จําเป็นต้องให้คุณ "บันทึก" ข้อมูลของคุณอย่างชัดเจน  เมื่อคุณย้ายจากระเบียนหนึ่งไปยัง Access ระเบียนถัดไปจะบันทึกข้อมูลของคุณโดยอัตโนมัติ  บ่อยครั้งที่ทํางานในแบบที่คุณต้องการ  แต่จะเกิดอะไรขึ้นถ้าผู้ใช้ต้องดําเนินการเพื่อระบุว่าพวกเขาพร้อมที่จะบันทึก 

ตัวอย่างเช่น ฟอร์ม frmCompanyDetail มีฟอร์มย่อยสําหรับ ที่ติดต่อ (sfrmCompanyDetail_Contacts)  ดังนั้น จะเกิดอะไรขึ้นถ้าคุณเริ่มเพิ่มหรือแก้ไขข้อมูลบริษัท สมมติว่าหมายเลขโทรศัพท์ — และหยุดชั่วขณะเพื่อแก้ไขคําผิดที่คุณสังเกตเห็นในข้อมูลผู้ติดต่อ  ตามค่าเริ่มต้น Access จะบันทึกการเปลี่ยนแปลงใดๆ ที่คุณทําไว้ในระเบียนบริษัทเมื่อคุณคลิกที่ระเบียนที่ติดต่อ ซึ่ง ไม่ใช่ สิ่งที่คุณต้องการ 

ในแบบฟอร์มนี้ เราแสดงวิธีหนึ่งในการทําสิ่งนี้ให้สําเร็จด้วยบันทึกข้อมูลเดียวสําหรับบริษัท

เหตุผลในการมีปุ่ม ยกเลิก คืออะไร แป้นหลี กจะยกเลิก ข้อมูลใดๆ ที่ใส่หรือเปลี่ยนแปลง (แต่ยังไม่ได้บันทึก) ในตัวควบคุมบนฟอร์ม ในสถานะนี้ ไอคอนรูปดินสอจะปรากฏในตัวเลือกระเบียน (แถบแนวตั้งสีเทาที่ด้านซ้ายสุดของแถว)

อย่างไรก็ตาม หลังจากที่คุณคลิกปุ่ม เพิ่มบริษัท คุณจะสังเกตเห็นว่าไม่มีไอคอนรูปดินสอจนกว่าคุณจะเริ่มป้อนข้อมูลในเรกคอร์ดบริษัทใหม่ จะเกิดอะไรขึ้นถ้าคุณเปลี่ยนใจในการเพิ่มบริษัทใหม่ในจุดนี้ ถ้าคุณกดแป้น Escape จะไม่มีสิ่งใดเกิดขึ้นเนื่องจากคุณยังไม่ได้ใส่ข้อมูลใดๆ นั่นคือเหตุผลที่เรามีปุ่มยกเลิก

การคลิกปุ่ม ยกเลิก ทํางานเสมอ แป้น Escape จะทํางานเมื่อคุณใส่หรือเปลี่ยนแปลงข้อมูลเท่านั้น  

ถ้าคุณเริ่มเพิ่มหรือเปลี่ยนแปลงข้อมูล แล้วปิดฟอร์มโดยไม่ต้องคลิก บันทึกหรือยกเลิก ตามค่าเริ่มต้น Access จะบันทึกข้อมูล  

กฎทางธุรกิจ: ตามกฎทางธุรกิจของ Northwind สําหรับบริษัท ต่างๆ เราต้องการให้คุณระบุอย่างชัดเจนว่าคุณต้องการ "บันทึก"  เพื่อให้แน่ใจว่าเราต้องตรวจสอบว่าผู้ใช้คลิกบันทึกในเหตุการณ์ Form_BeforeUpdate หรือไม่และหากพวกเขาไม่ได้คลิกบันทึกแจ้งให้ผู้ใช้ระบุว่าพวกเขาต้องการบันทึกหรือยกเลิกการเปลี่ยนแปลงของพวกเขา '

การเปลี่ยนแปลงชนิดบริษัท

กฎทางธุรกิจ: ถ้าบริษัทมีใบสั่ง ใบสั่งซื้อ หรือผู้จัดจําหน่ายสําหรับผลิตภัณฑ์อยู่แล้ว เราได้สร้างฟังก์ชัน CompanyIsActive() เพื่อพิจารณาว่ามีเงื่อนไขข้างต้นหรือไม่ ถ้าเป็นเช่นนั้น ผู้ใช้จะไม่สามารถเปลี่ยนชนิดบริษัทได้จนกว่าข้อมูลอ้างอิงเหล่านี้จะถูกล้างข้อมูล (ถูกลบ) 

กฎนี้ถูกบังคับใช้ในแบบฟอร์มนี้เท่านั้น  ในแอปพลิเคชันที่พร้อมสําหรับการผลิต คุณจะไม่อนุญาตให้ผู้ใช้เปลี่ยนแปลงข้อมูลโดยการเปิดตารางโดยตรง  ใน Northwind เราอนุญาตให้คุณเปิดตารางและทําสิ่งที่คุณต้องการ  นี่เป็นวิธีที่ยอดเยี่ยมในการเรียนรู้ แต่ก็ทําให้คุณมีอิสระที่จะทําการเปลี่ยนแปลงที่อาจละเมิดกฎ 

คุณควรโปรแกรมป้องกันเสมอ วางแผนสําหรับเหตุการณ์ที่ไม่คาดคิด แม้ว่าปัจจุบัน บริษัท จะเป็นผู้ขนส่งสินค้าแต่ไม่ได้หมายความว่าพวกเขาไม่ได้เป็นผู้ขายหรือลูกค้าในบางครั้ง ID ของพวกเขาอาจอยู่ในระเบียนเก่าในตาราง ProductVendor หรือ PurchaseOrder '

ฟอร์มกล่องโต้ตอบแบบกําหนดเอง

เมื่อต้องการแสดงผลการค้นหา cboCompanyTypeID_BeforeUpdate ใช้ฟอร์มกล่องโต้ตอบ frmGenericDialog ซึ่งอาจเป็นทางเลือกที่ดีสําหรับกล่องข้อความมาตรฐานเมื่อคุณมีข้อมูลจํานวนมากที่จะแสดง นอกจากนี้ยังใช้กับแบบฟอร์มพนักงานเพื่อวัตถุประสงค์ที่คล้ายกัน'  ลบการตรวจสอบ Referential Integrity

ใน Northwind Starter Edition เราปล่อยให้ลักษณะการทํางานเริ่มต้นของ Access แจ้งให้คุณทราบว่าบริษัทไม่สามารถลบได้เมื่อมีระเบียนที่เกี่ยวข้อง  

ใน Northwind Developer Edition เราจะแจ้งให้คุณทราบก่อนการลบ แทนที่จะยอมรับลักษณะการทํางานเริ่มต้นของ Access  เราทําเช่นนั้นโดยใช้ฟังก์ชั่นเดียวกันกับที่เราทําการเปลี่ยนแปลงประเภท บริษัท ฟังก์ชัน CompanyIsActive()

ความแตกต่างคือเราใส่ใจเกี่ยวกับ คําสั่งซื้อ หรือ ใบสั่งซื้อเท่านั้น ถ้าไม่มี คําสั่งซื้อ หรือ ใบสั่งซื้อ เราจะยืนยันความตั้งใจของคุณเพื่อลบ และเราจะลบ ผู้จําหน่ายผลิตภัณฑ์ และ ผู้ติดต่อ หากมีอยู่สําหรับคุณ 

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ