การ sort by หลาย field ใน access
กระทู้เก่าบอร์ด อ.Yeadram

 3,024   4
URL.หัวข้อ / URL
การ sort by หลาย field ใน access

   ผมมีข้อสงสัยว่าใน access สามารถ sort by field ต่างๆ ที่เราต้องการ

หลายๆ field เหมือนเป็น level เหมือนใน excel ได้หรือไม่ครับ เพราะทดลองทำหลายวิธีแล้ว ทำไม่ได้ครับ

ครั้งล่าสุดมีผู้แนะนำให้นำ field ที่ต้องการ sort มาอยู่ติดกันแล้วจึง sort กี่ field ก้ได้ แต่ทำไม่ได้ครับ

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

1 @R13325
ให้สร้างเป็นคิวรี่นะครับ (อย่าไปยุ่งกับข้อมูลในตารางโดยไม่จำเป็น)
ถ้าทำโดยวิซาร์ด
ให้จำไว้ว่า มันให้ความสำคัญ ตามลำดับฟิลด์ จาก ซ้ายไปขวาเสมอ

ถ้าเขียนเป็น statement ก็คล้ายๆ กัน คุณเอาชื่อฟิลด์ไหนขึ้นก่อน มันจะให้ความสำคัญตามลำดับนั้นครับ

Order By uID, uName, uAddress, uPhone;
มันก็จะเรียงตาม uID ก่อน ถ้า uID เท่ากันมันจะเรียงตาม uName ไล่ลำดับไปอย่างนี้

ถ้าเป็นมือใหม่จำไว้เลยนะครับ ตาราง มีไว้ให้คุณออกแบบโครงสร้างและความสัมพันธ์ มีไว้ให้คุณเก็บข้อมูล แต่ "ไม่ได้มีไว้ให้คุณเข้าไปดูข้อมูล" อย่าไปพยายาม เรียงลำดับ จัดรูปแบบใดๆ ของมัน
ถ้าอยากดูข้อมูล แล้วลำดับสวยๆ ตามใจชอบ ให้สร้างเป็นคิวรี่หรือฟอร์มหรือรายงานครับ
2 @R13328
อ.yeadramครับ
ขอถามแทรกตรงนี้หน่อยครับ คำถามทำนองเดียวกัน
ผมสร้างฟอร์มอิงกับตาราง บนฟอร์มมีอ็อบชั่นบ็อกให้กดเลือกเดือนเกิด แล้วให้ซับฟอร์มแสดงเรคอร์ดวันเกิดของสมาชิกออกมา
แต่วันเกิดที่แสดงออกมาไม่เรียงตามวันที่ ผมอยากให้ซับฟอร์มเรียงตามวันที่
ผมควรทำอย่างไรดีครับ? จะกำหนดใน property ของฟิลด์วันเกิด (แต่ผมหาไม่เจอ) หรือจะเขียนไว้ใน codeอ็อบชั่นบ็อกซ์ครับ
รบกวนอาจารย์ด้วยครับ ขอบคุณครับ
3 @R13332
คำสั่งใน Option Box คือคำสั่งใช้ Requery เอา source ใหม่เลย หรือว่าแค่ใช้ filter ครับ

ถ้าเป็นการ requery เอา source ใหม่
ให้คุณเพิ่มคำสั่ง sort ไปใน statement เลยครับ เช่น

me.child1.recordsource = "select * from table1 where month(bdate)=" & meOption & " order by bdate;"
me.child1.requery

แต่ถ้าเป็นการสั่งใช้ filter เช่น
me.filter = "Month(bDate)=" & meOption
me.filteron=true

วิธีนี้แนะนำให้ตั้งค่า Order by ในคุณสมบัติของฟอร์มครับ กำหนดชื่อฟิลด์เอาไว้ในนั้นได้เลย
หรือจะใช้สั่งเอา ตอน runtime ก็ได้ ก็คือต่อคำสั่งจากเบื้องต้น ด้วยคำสั่งนี้
me.child1.Orderby="[bDate]"

ปล. ถ้าต้องการเรียงกลับ ให้ต่อหลังชื่อฟิลด์ด้วย 1 เคาะและคีย์เวอร์ดว่า Desc
4 @R13431
อ.yeadramครับ เอาไปใช้แล้ว ยังไม่ได้ผลครับ
1.ผมไปเซ็ทที่ Form Property : OrderBy [Birth1] พอกดปุ่ม Option Group ฟิลด์ที่ออกมาไม่เรียงตามวันที่ครับ
2.ผมเอาโค้ดไปใส่ใน Filter Statement ดังนี้
With CodeContextObject
If SelectMonth >= 1 And SelectMonth <= 12 Then
     Me.Text108 = MonthName(SelectMonth, False) 'Text108ให้แสดงชื่อเดือน
     DoCmd.ApplyFilter "", "Month(Birth1) = '" & CStr(SelectMonth) & "'", "" 'SelectMonth เป็น OptionGroup มีปุ่มเดือน(ม.ค.-ธ.ค และ ทั้งปี) 13ปุ่ม)
Else
     Me.Text108 = "Whole Year"
     DoCmd.ShowAllRecords
    Me.Filter = "Date(Birth1)=" & ASCD
    Me.FilterOn = True
    Me.Filter = "Date(Birth1)=" & ASCD     Me.FilterOn = True
ผมใส่โค้ดต่อท้าย พอกดปุ่ม เครื่องฟ้องที่ ASCD
ผมควรแก้ไขโค้ดนี้อย่างไรครับ? เพราะเปิดอ่าน help แล้ว ไม่พบทางแก้ไข
ฝากถามอีกข้อครับ เห็นในโค้ด declare Dim rst As String (Cancel As Integer)
Cancel As Integer คืออะไรครับ?
รบกวนอาจารย์ด้วยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2575s