สอบถามการตั้งค่าการเรียงลำดับข้อมูลครับ
กระทู้เก่าบอร์ด อ.Yeadram

 975   4
URL.หัวข้อ / URL
สอบถามการตั้งค่าการเรียงลำดับข้อมูลครับ

ตรงฟิวด์ shipment ผมสั่งให้เรียงวันที่จากอดีตมาปัจจุบันซึ่ง OK แต่ติดปัญหาตรงที่ พอรายการไหนเป็นวันที่ shipment เดียวกัน
เช่น SINGHA TRAND1และ SINGHA TRAND2ซึ่ง SINGHA TRAND 2 ผมคีย์ทีหลัง SINGHA TRAND1 แต่มันดันดีดขึ้นไปอยู่ก่อน SINGHATRAND1
ซึ่งความต้องการของผมคือ ถ้ารายการไหนวันที่เดียวกัน ตัวไหนคีย์ก่อนอยู่ข้างบน ส่วนตัวไหนคีย์ที่หลังก็ต่อลงมาด้านล่าง ไม่ทราบว่าต้องเขียน code เพิ่มยังไงครับ


4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R24405
ควรมีฟิลด์ ID ที่เป็น AutoNumber ด้วย แล้วก็ให้เรียงตามเงื่อนไข

DoCmd.SetOrderBy "[Shipment] ASC, [ID] ASC"

ประมาณนี้ครับ
2 @R24407
เพิ่มฟิลด์ ID เป็น AutoNumber แล้วใส่ code ตามที่คุณ TTT บอกใช้ได้แล้วครับ ขอบคุณมากๆเลยครับ แต่เจ้า AutoNumber เนี่ย มันจะฝังค่าไว้เลย เช่นหากผมเริ่มบรรทัดใหม่เพื่อจะคีย์ข้อมูล แต่เปลี่ยนใจลบออก พอจะเข้ามาคีย์ใหม่มันจะรันเป็นเลขใหม่เลย เช่นข้อมูลมีถึง ID ที่่7 แต่พอเข้ามาคีย์ใหม่ จะกลายเป็น ID 9 เลย แก้ไขได้มั้ยครับ ซึ่ง ID 8 ก็ไม่มีข้อมูล
3 @R24412
สอบถามเพิ่มเติมนะครับ ถ้าหากผมต้องการ group Buyer อีกทีจะสามารถทำได้หรือเปล่าครับ คือถ้าเป็น shipment เดียวกัน อยากจะให้ buyer เรียงอยู่ด้วยกันด้วยครับ เพื่อจะได้ดูง่ายๆ

DoCmd.SetOrderBy "[Shipment] ASC, [ID] ASC, [Buyer] ASC"
4 @R24413
อื่ม! จริงๆแล้ว เราทำ AutoNumber ไว้เพื่ออ้างความเป็น unique ของเรคคอร์ดนั้นๆ และเพื่อให้เราสามารถรู้ข้อมูลก่อนหลังในการบันทึก และรู้ได้ความเราเคยลบเรคคอร์ดใดไปบ้าง ฉนั้นมันก็มีประโยชน์นะครับที่ข้ามเลขเมื่อเราทำการลบไป
- เราเอาฟิดล์ ID มาบนฟอร์มเพื่อทำการ Sort ข้อมูลก็พอ โดยไม่ต้องให้มันแสดงบนฟอร์มก็ได้ครับ Visible = No
- ส่วนการใช้วิธีเขียนโค้ดบังคับให้ AutoNumber เป็นเลขตามที่เราต้องการ มันมีวิธีทำได้แต่ไม่แนะนำครับ เพราะมีข้อจำกัดและหากเขียนไม่รัดกุมพอจะทำให้ฐานข้อมูลเสียได้ ตัวอย่างเช่น หากเราต้องการให้ AutoNumber เริ่มต้นเรคคอร์ดใหม่ที่ 1000 ก็ใช้คำสั่ง
DoCmd.RunSQL "ALTER TABLE ชื่อตาราง ALTER COLUMN ชื่อฟิดล์ COUNTER (1000);"
แต่ต้องเรียกขณะที่ตารางไม่ได้เปิดใช้อยู่เท่านั้น
- หากต้องการทำเลข ID เรียงลำดับแบบไม่ข้ามเลข แนะนำให้ไปทำเป็นฟิลด์ Number ธรรมดา แล้วเขียนโค้ดประมาณว่าเรียกค่าจากตารางมา อาจใช้ Dcount หรือ Dmax ก็ได้แล้วแต่ข้อมูล เช่น Dcount(1,"ชื่อตาราง") + 1
- DoCmd.SetOrderBy "[Shipment] ASC, [ID] ASC, [Buyer] ASC" ได้ครับ ก็คือ โปรแกรมก็จะเรียงลำดับที่ฟิลด์ Shipment ก่อน หากเหมือนกันก็จะเรียงที่ ID หาก ID เท่ากันก็จะเรียงที่ Buyer ต่อมา ประมาณนี้ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2933s