การเรียงลําดับที่อยู่ IP ใน Access

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

หัวข้อนี้จะอธิบายกระบวนงานสําหรับการเรียงลําดับที่อยู่อินเทอร์เน็ตโพรโทคอล (IP) ที่เก็บไว้ในฐานข้อมูล Access

บทนำ

ถ้าคุณทํางานกับที่อยู่ IP คุณอาจทราบอยู่แล้วว่าการทํางานนี้ไม่ง่ายเหมือนการทํางานกับข้อความหรือตัวเลข เนื่องจากที่อยู่ IP คือคอลเลกชันของค่าตัวเลขสี่ค่าที่คั่นด้วยเครื่องหมายจุด (.) โดยที่แต่ละค่าเป็นตัวเลขระหว่าง 0 ถึง 255 ตารางต่อไปนี้แสดงข้อมูลก่อนที่จะนําลําดับการจัดเรียงใดๆ ไปใช้

MachineID พนักงาน ตำแหน่งที่ตั้ง IPAddress
1 ... ... 123.4.245.23
2 ... ... 104.244.253.29
3 ... ... 1.198.3.93
4 ... ... 32.183.93.40
5 ... ... 104.30.244.2
6 ... ... 104.244.4.1

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

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

MachineID IPAddress
3 1.198.3.93
2 104.244.253.29
6 104.244.4.1
5 104.30.244.2
1 123.4.245.23
4 32.183.93.40

ที่อยู่ที่เริ่มต้นด้วย 1 จะแสดงก่อนอยู่ที่เริ่มต้นด้วย 2 และอื่นๆ ตารางต่อไปนี้แสดงที่อยู่ในลําดับจากน้อยไปหามากที่ถูกต้อง

MachineID IPAddress
3 1.198.3.93
4 32.183.93.40
5 104.30.244.2
6 104.244.4.1
2 104.244.253.29
1 123.4.245.23

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

ส่วนที่ 1 ส่วนที่ 2 ตอนที่สาม ส่วนที่ 4
1 198 3 93
32 183 93 40
104 30 244 2
104 244 4 1
104 244 253 29
123 4 245 23

การเรียงลําดับทั้งสี่ส่วนแยกกันเป็นเคล็ดลับที่อยู่เบื้องหลังการเรียงลําดับที่อยู่ IP ในกระบวนการต่อไปนี้ คุณสร้างคิวรีที่นอกเหนือจากเขตข้อมูลที่อยู่ IP แล้ว ยังมีคอลัมน์จากการคํานวณสี่คอลัมน์โดยที่แต่ละคอลัมน์จัดเก็บส่วนของค่าที่อยู่ คอลัมน์จากการคํานวณแรกจะมีตัวเลขส่วนแรกของที่อยู่ คอลัมน์จากการคํานวณที่สองจะเก็บตัวเลขส่วนที่สองของที่อยู่ และอื่นๆ แทนที่จะเรียงลําดับระเบียนตามเขตข้อมูล IPAddress คิวรีจะเรียงลําดับระเบียนตามคอลัมน์จากการคํานวณทั้งสี่คอลัมน์

สร้างคิวรี

คุณจะสร้างคิวรีแบบใช้เลือกข้อมูลที่ชื่อว่า IPAddresses ที่เรียงลําดับแล้ว ซึ่งจะแสดงระเบียนของที่อยู่ IP จากน้อยไปหามาก สมมติว่าฐานข้อมูลปัจจุบันมีตารางชื่อ MachineDetails ที่มีเขตข้อมูลข้อความชื่อ IPAddress

  1. คลิก สร้าง>การออกแบบคิวรี 

  2. เลือก เพิ่มตาราง (แสดงตาราง ใน Access) แล้วลาก รายละเอียดเครื่องไปยัง ส่วนบนของมุมมองออกแบบ

  3. ลากเขตข้อมูล MachineID และ IPAddress ไปยังตารางออกแบบคิวรี

  4. ในตอนนี้ คุณก็พร้อมที่จะเพิ่มคอลัมน์จากการคํานวณแล้ว ในคอลัมน์เปล่าคอลัมน์แรกทางด้านขวา ให้พิมพ์นิพจน์ PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".")-1))) ในแถวเขตข้อมูล นิพจน์จะส่งกลับอักขระก่อนจุดแรก (.) ในเขตข้อมูล IPAddress
    ตอนนี้ ให้ตรวจทานนิพจน์ เนื่องจากคุณไม่ทราบจํานวนหลักที่ประกอบขึ้นเป็นส่วนแรกของที่อยู่ คุณจึงใช้ฟังก์ชัน InStr เพื่อค้นหาตําแหน่งของคาบเวลาแรก การลบไป 1 (เพื่อไม่รวมจุด) จะส่งกลับจํานวนหลักในส่วนแรก จากนั้นให้ใช้ตัวเลขนี้กับฟังก์ชัน Left เพื่อแยกอักขระจํานวนมากนั้น โดยเริ่มต้นจากอักขระด้านซ้ายสุดจากเขตข้อมูล IPAddress สุดท้าย ให้คุณเรียกใช้ฟังก์ชัน Val เพื่อแปลงอักขระที่ส่งกลับโดยฟังก์ชัน Left ให้เป็นตัวเลข ขั้นตอนสุดท้ายนี้จําเป็น เนื่องจากชนิดข้อมูลต้นแบบเป็นข้อความ

  5. บันทึกคิวรีโดยคลิก บันทึก บนแถบเครื่องมือด่วน เป็นความคิดที่ดีที่จะทําเช่นนี้หลังจากแต่ละขั้นตอนระดับกลาง

  6. เพิ่มคอลัมน์สําหรับส่วนที่อยู่ที่สอง ในคอลัมน์ด้านขวาของ PartI ให้พิมพ์ PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".")+1,InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")-InStr(1,[IPAddress],".")-1)) ในแถวเขตข้อมูล นิพจน์จะส่งกลับอักขระที่อยู่ระหว่างคาบแรกและคาบที่สองในเขตข้อมูล IPAddress
    รีวิวนิพจน์อีกครั้ง เนื่องจากคุณไม่ทราบจํานวนหลักที่ประกอบขึ้นเป็นส่วนที่สองของที่อยู่ หรือส่วนที่สองเริ่มต้นที่ใด (เนื่องจากคุณไม่ทราบความยาวของส่วนแรก) คุณจึงใช้ฟังก์ชัน InStr เพื่อค้นหาตําแหน่งของคาบเวลา จากนั้นคุณใช้ฟังก์ชัน Mid เพื่อแยกอักขระที่อยู่หลังจากจุดแรกแต่นําหน้าจุดที่สอง สุดท้าย ให้คุณเรียกใช้ฟังก์ชัน Val เพื่อแปลงอักขระที่ส่งกลับโดยฟังก์ชัน Mid ให้เป็นตัวเลข ขั้นตอนสุดท้ายนี้จําเป็น เนื่องจากชนิดข้อมูลต้นแบบเป็นข้อความ

  7. เพิ่มคอลัมน์สําหรับส่วนที่อยู่ที่สาม ในคอลัมน์ทางด้านขวาของส่วนที่ II ให้พิมพ์ส่วนที่ III: Val(Mid([IPAddress],InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")+1,InStr(InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")+1,[IPAddress],".")-InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")-1)) ในแถวเขตข้อมูล นิพจน์จะส่งกลับอักขระที่อยู่ระหว่างคาบที่สองและสามในเขตข้อมูล IPAddress
    รีวิวนิพจน์อีกครั้ง เนื่องจากคุณไม่ทราบจํานวนหลักที่ประกอบเป็นส่วนที่สามของที่อยู่ หรือส่วนที่สามเริ่มต้นที่ใด (เนื่องจากคุณไม่ทราบความยาวของส่วนแรกและส่วนที่สอง) คุณจึงใช้ฟังก์ชัน InStr เพื่อหาตําแหน่งของคาบเวลา จากนั้นคุณใช้ฟังก์ชัน Mid เพื่อแยกอักขระที่อยู่หลังจากจุดที่สองแต่ก่อนหน้าจุดที่สาม สุดท้าย ให้คุณเรียกใช้ฟังก์ชัน Val เพื่อแปลงอักขระที่ส่งกลับโดยฟังก์ชัน Mid ให้เป็นตัวเลข ขั้นตอนสุดท้ายนี้จําเป็น เนื่องจากชนิดข้อมูลต้นแบบเป็นข้อความ

  8. เพิ่มคอลัมน์สําหรับส่วนที่อยู่ที่สี่และส่วนสุดท้าย ในคอลัมน์ทางด้านขวาของส่วนที่ III ให้พิมพ์ PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")+1,[IPAddress],"."))) ในแถว เขตข้อมูล นิพจน์จะส่งกลับอักขระที่อยู่หลังจากจุดสุดท้าย
    รีวิวนิพจน์อีกครั้ง สิ่งสําคัญคือการค้นหาตําแหน่งของช่วงเวลาที่สามแล้วแยกอักขระทั้งหมดที่ตามมา เนื่องจากคุณไม่ทราบแน่นอนว่าช่วงที่สามตั้งอยู่ที่ใด คุณจึงเรียกใช้ฟังก์ชัน InStr สามครั้งเพื่อค้นหาตําแหน่งของคาบเวลาที่สาม จากนั้นคุณใช้ฟังก์ชัน Len เพื่อคํานวณจํานวนหลักในส่วนที่สี่ จํานวนหลักที่ถูกส่งกลับจะใช้กับฟังก์ชัน Right เพื่อแยกอักขระจํานวนมากนั้นออกจากส่วนขวาของเขตข้อมูล IPAddress สุดท้าย ให้คุณเรียกใช้ฟังก์ชัน Val เพื่อแปลงอักขระที่ส่งกลับโดยฟังก์ชัน Mid ให้เป็นตัวเลข ขั้นตอนสุดท้ายนี้จําเป็น เนื่องจากชนิดข้อมูลต้นแบบเป็นข้อความ

  9. ตั้งค่าแถว เรียงลําดับ ของคอลัมน์จากการคํานวณทั้งสี่คอลัมน์เป็น จากน้อยไปหามาก
    ข้อสําคัญ แถว เรียงลําดับ ของคอลัมน์ IPAddress ต้องเว้นว่างไว้
    ถ้าคุณต้องการเรียงลําดับตามค่าเขตข้อมูลอื่นๆ นอกเหนือจากที่อยู่ ให้วางเขตข้อมูลไว้ทางด้านซ้ายหรือขวาของคอลัมน์จากการคํานวณทั้งสี่คอลัมน์ อย่าวางเขตข้อมูลการเรียงลําดับอื่นๆ ระหว่างคอลัมน์จากการคํานวณ

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

    MachineID IPAddress ส่วนที่ 1 ส่วนที่ 2 ตอนที่สาม ส่วนที่ 4
    3 1.198.3.93 1 198 3 93
    4 32.183.93.40 32 183 93 40
    5 104.30.244.2 104 30 244 2
    6 104.244.4.1 104 244 4 1
    2 104.244.253.29 104 244 253 29
    1 123.4.245.23 123 4 245 23
  11. สลับกลับไปยังมุมมองออกแบบ แล้วล้างกล่องกาเครื่องหมายในแถว แสดง ของคอลัมน์จากการคํานวณทั้งสี่คอลัมน์ ซึ่งจะป้องกันไม่ให้คอลัมน์จากการคํานวณแสดงในมุมมองแผ่นข้อมูล

  12. อีกทางหนึ่งคือ ระบุเกณฑ์สําหรับการแยกระเบียนจากคิวรี

  13. สลับไปยังมุมมองแผ่นข้อมูลเพื่อดูระเบียนที่เรียงลําดับ คุณจะเห็นระเบียนที่เรียงลําดับอย่างถูกต้องตามลําดับที่อยู่ IP จากน้อยไปหามาก

การใช้ที่อยู่ IP ที่เรียงลําดับได้มากขึ้น

ตรวจสอบที่อยู่ IP ระหว่างการป้อนข้อมูล

ถ้าคุณต้องการตรวจสอบความถูกต้องของที่อยู่โดยไม่ต้องเขียนโค้ด คุณสามารถทําในขอบเขตที่จํากัดได้โดยการตั้งค่าคุณสมบัติ InputMask ของเขตข้อมูลเป็น ###.###.#; 0;" " และคุณสมบัติรูปแบบของเขตข้อมูลที่อยู่ IP ให้เป็น &&&&&&&&&&&&

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

รูปแบบการแสดงผลทําหน้าที่อะไร เมื่อคุณพิมพ์เสร็จและออกจากเขตข้อมูล รูปแบบการแสดงผลจะเอาช่องว่างในที่อยู่ออก และแสดงเฉพาะตัวเลขและจุด ดังนั้น ถ้าคุณพิมพ์ "354.35 .2 .12" ที่อยู่จะแสดงเป็น "354.35.2.12" โปรดทราบว่าถ้าคุณคลิกภายในที่อยู่ หรือกด F2 (เพื่อเข้าสู่โหมดแก้ไข) เมื่อเลือกที่อยู่ ช่องว่างจะปรากฏขึ้นอีกครั้ง

เคล็ดลับ

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

การเรียงลําดับระเบียนในฟอร์มหรือรายงานตามที่อยู่ IP

ถ้าคุณต้องการสร้างฟอร์มหรือรายงานที่ระเบียนถูกเรียงลําดับตามที่อยู่ IP ให้ยึดวัตถุใหม่บนคิวรีที่เรียงลําดับที่อยู่ตามที่อธิบายไว้ก่อนหน้านี้ แทนที่จะยึดอยู่บนตารางที่เก็บที่อยู่

ด้านบนของหน้า