กระทู้เก่าบอร์ด อ.Yeadram
        
           4,542   11		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        เรียงลำดับในคิวรี่      
    
      อยากเรียงข้อมูลจากน้อยไปมากหรือจากมากไปน้อยดังนี้
214/2553
3/2552
3/2553
481/2554
802/2554
อันนี้คือจัดเรียงจากน้อยไปมากได้แบบนี้
802/2554
481/2554
3/2553
3/2552
214/2553
อันนี้เรียงจากมากไปน้อย
ซึ่งไม่ถูกต้อง ต้องทำใช้คำสั่งในคิวลี่แบบไหนคะในโปรแกรม access
    
  214/2553
3/2552
3/2553
481/2554
802/2554
อันนี้คือจัดเรียงจากน้อยไปมากได้แบบนี้
802/2554
481/2554
3/2553
3/2552
214/2553
อันนี้เรียงจากมากไปน้อย
ซึ่งไม่ถูกต้อง ต้องทำใช้คำสั่งในคิวลี่แบบไหนคะในโปรแกรม access
				11 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    1 @R11882    
        
  
      แล้วที่ถูกต้อง ต้องเป็นอย่างไร    
    
  
        
    2 @R11887    
        
  
      เออ...ความต้องการแบบไหน?
คือถ้าต้องการเรียง โดยเดาว่าหลัง / เป็นปึ ให้เรียงก่อน แล้วค่อยเรียงตัวเลขหน้าเครื่องหมายหรือเปล่า
ถ้างั้นคุณอาจต้องแยกข้อมูลในคิวรี่ก่อน อาจใช้คำสั่ง Left หรือ Right โดยใช้เครื่องหมาย / เป็นตัวกำหนด แล้วค่อยจัดเรียงที่ฟิลด์แยกข้อมูลจะง่ายกว่าครับ เช่น
ในคิวรี่ สร้างฟิลด์ใหม่ตัวที่หนึ่ง
Expr2: Left([ชื่อฟิลด์คุณ],InStr([สินค้า],"/")-1)
สร้างตัวที่สอง
Expr1: Right([ชื่อฟิลด์คุณ],4)
จากนั้นค่อยกำหนด Ascending ทั้งสองตัวแทน
แบบง่ายๆนะครับ ลองปรับดู
    
    
  คือถ้าต้องการเรียง โดยเดาว่าหลัง / เป็นปึ ให้เรียงก่อน แล้วค่อยเรียงตัวเลขหน้าเครื่องหมายหรือเปล่า
ถ้างั้นคุณอาจต้องแยกข้อมูลในคิวรี่ก่อน อาจใช้คำสั่ง Left หรือ Right โดยใช้เครื่องหมาย / เป็นตัวกำหนด แล้วค่อยจัดเรียงที่ฟิลด์แยกข้อมูลจะง่ายกว่าครับ เช่น
ในคิวรี่ สร้างฟิลด์ใหม่ตัวที่หนึ่ง
Expr2: Left([ชื่อฟิลด์คุณ],InStr([สินค้า],"/")-1)
สร้างตัวที่สอง
Expr1: Right([ชื่อฟิลด์คุณ],4)
จากนั้นค่อยกำหนด Ascending ทั้งสองตัวแทน
แบบง่ายๆนะครับ ลองปรับดู
        
    3 @R11903    
        
  
      เรามีข้อมูลอยู่ในฟิลด์ id, idk, name ชื่อตารางว่า money ข้อมูลในตารางมีดังนี้
id idk Name
1 1/2551 sara
2 2/2551 apple
3 10/2551 nicha
ในการจัดเรียงลำดับจากน้อยไปมากโดยใช้ idk จะได้
id idk Name
3 10/2551 nicha
1 1/2551 sara
2 2/2551 apple
พอเราจัดเรียงจากมากไปน้อยโดยใช้ idk ในการจัดเรียงเช่นกันเราได้
id idk Name
2 2/2551 Apple
1 1/2551 100
3 10/2551 362
แล้วทำไมเรียงลำดับน้อยไปมากมันได้ 10/2551 ออกมาก่อน แล้วมากไปน้อยมันได้ 2/2551 ออกมาก่อนต้องทำแบบไหนในคิวรี่นะคะ นี่แหละคือความต้องการ
 
    
    
  id idk Name
1 1/2551 sara
2 2/2551 apple
3 10/2551 nicha
ในการจัดเรียงลำดับจากน้อยไปมากโดยใช้ idk จะได้
id idk Name
3 10/2551 nicha
1 1/2551 sara
2 2/2551 apple
พอเราจัดเรียงจากมากไปน้อยโดยใช้ idk ในการจัดเรียงเช่นกันเราได้
id idk Name
2 2/2551 Apple
1 1/2551 100
3 10/2551 362
แล้วทำไมเรียงลำดับน้อยไปมากมันได้ 10/2551 ออกมาก่อน แล้วมากไปน้อยมันได้ 2/2551 ออกมาก่อนต้องทำแบบไหนในคิวรี่นะคะ นี่แหละคือความต้องการ
        
    4 @R11904    
        
  
      ดู ๆ แล้วมันเป็น Text หรือเปล่า...น่าจะเปลี่ยนชนิดเป็น Date/Time..ซึ่งอาจจะต้องดัดแปลงสมมุติข้อมูลเป็นวันเพื่อนำไปใช้งาน..คงจะเรียงได้ถูกต้อง ???    
    
  
        
    5 @R11905    
        
  
      อีกทีครับ ... แล้วที่ถูกต้อง ต้องเป็นอย่างไร หลักการเรียงของคุณคืออะไร  แล้วที่คุณ TTT ตอบให้ไปแล้ว ไม่ตรงตามที่ต้องการหรือ    
    
  
        
    6 @R11906    
        
  
      คือมันเกี่ยวกับ Data Type ในการจัดเก็บครับ ลักษณะนี้แสดงว่าคุณเก็บในโครงสร้างของ Text ทำให้โปรแกรมนำค่าตัวแรกสุดมาเรียงก่อน ไม่ว่าจะเป็น 1 หรือ 10 ก็ไม่เกี่ยว เพราะตัวแรกก็คือ 1 เท่ากัน ฉะนั้นมันต้องมาก่อน 2 แน่นอน จากนั้นโปรแกรมค่อยนับตัวที่สอง..สาม เรียงตามลำดับครับ เหตุเพราะโปรแกรมมองเป็น อักขระ ไม่ใช่ Data Type แบบ Number (สังเกตุได้จากข้อมูลมี / ) หรือ Date/Time    
    
  
        
    7 @R11907    
        
  
      อย่างที่ อ.สันติสุข ว่าครับ ยังไงคุณก็ยังไม่ได้บอกความต้องการอยู่ดี เช่น
id idk Name
1 1/2551 100
2 2/2551 Apple
3 10/2551 362
แล้วถ้ามี 1/2552 จะเป็น
1 1/2551 100
- 1/2552 -
2 2/2551 Apple
3 10/2551 36
หรือ
1 1/2551 100
2 2/2551 Apple
3 10/2551 362
- 1/2552 -
    
  id idk Name
1 1/2551 100
2 2/2551 Apple
3 10/2551 362
แล้วถ้ามี 1/2552 จะเป็น
1 1/2551 100
- 1/2552 -
2 2/2551 Apple
3 10/2551 36
หรือ
1 1/2551 100
2 2/2551 Apple
3 10/2551 362
- 1/2552 -
        
    8 @R11908    
        
  
      ออกตัวก่อนว่าไม่ได้เก่งมากนะครับ แต่เท่าที่คิดได้ตอนนี้และง่ายที่สุดไว้ทดสอบดูนะครับ
1. ที่มุมมองออกแบบคิวรี่ เลือกช่องฟิลด์ว่าง ใส่โค๊ตนี้ลงไป
 
(ผมไม่สามารถ Post โค๊ดนี้ได้ ไม่รู้ทำไม่ เลยใช้รูปแทนแล้วกัน)
2. เซ็ทที่ Sort เป็น Ascending (ในฟิลด์ใหม่)
3. อาจเอาเครื่องถูกออกที่ Show (ในฟิลด์ไหม่)
    
  1. ที่มุมมองออกแบบคิวรี่ เลือกช่องฟิลด์ว่าง ใส่โค๊ตนี้ลงไป
 
(ผมไม่สามารถ Post โค๊ดนี้ได้ ไม่รู้ทำไม่ เลยใช้รูปแทนแล้วกัน)
2. เซ็ทที่ Sort เป็น Ascending (ในฟิลด์ใหม่)
3. อาจเอาเครื่องถูกออกที่ Show (ในฟิลด์ไหม่)
        
    9 @R11911    
        
  
      ขออนุญาตช่วยเดานะ
ปัญหาความต้องการของคุณหนิง น่าจะอยู่ที่การเรียงลำดับข้อมูลฟิลด์ idk นะคะ
ปัญหาเดียวกับการเรียงลำดับบ้านเลขที่ ซึ่งมี เลขบ้าน และเลข /
ปกติก็จะเอาเลขบ้านเป็นหลักก่อน แล้วตามด้วยเลข /
เคยผ่านตาว่าจะต้องแยกฟิลด์ เลขบ้านกับเลข / ออกจากกันก่อน แล้วจึงสั่งเรียง
ในคิวรี่นี่แหละ จำไม่ได้แล้วอยู่ในกระทู้ไหน พยายามหาให้ ยังไม่เจอค่ะ
    
  ปัญหาความต้องการของคุณหนิง น่าจะอยู่ที่การเรียงลำดับข้อมูลฟิลด์ idk นะคะ
ปัญหาเดียวกับการเรียงลำดับบ้านเลขที่ ซึ่งมี เลขบ้าน และเลข /
ปกติก็จะเอาเลขบ้านเป็นหลักก่อน แล้วตามด้วยเลข /
เคยผ่านตาว่าจะต้องแยกฟิลด์ เลขบ้านกับเลข / ออกจากกันก่อน แล้วจึงสั่งเรียง
ในคิวรี่นี่แหละ จำไม่ได้แล้วอยู่ในกระทู้ไหน พยายามหาให้ ยังไม่เจอค่ะ
        
    10 @R11913    
        
  
      ขอขอบพระคุณ อ.สันติสุข คุณTTT และคุณมาลีเป็นอย่างมากเลยค่ะ ที่ช่วยให้คำแนะนำ แล้วหนิงจะลองทำดูนะคะ แบบว่าหนิงไม่มีความรู้เกี่ยวกับโปรแกรมนี้เลย นี่คือครั้งแรกที่ทำ    
    
  
        
    11 @R11914    
        
    
      ลองไปค้นหามาให้จากที่เคยเก็บไว้นานแล้ว ลองทำดูนะคะ
โดยเพิ่มฟิลด์ใหม่ในคิวรี่เดิม เข้าไปอีก 2 ฟิลด์ ใส่โค้ดนี้ลงไปค่ะ
 
(ดูรูปตัวอย่าง) จากนั้นใช้ฟิลด์ที่สร้างใหม่นี้ เพื่อการเรียงลำดับตามที่ต้องการค่ะ
    
    
  โดยเพิ่มฟิลด์ใหม่ในคิวรี่เดิม เข้าไปอีก 2 ฟิลด์ ใส่โค้ดนี้ลงไปค่ะ
ฟิลด์ที่1 Expr1: IIf(InStr(1,[idk],"/")=0,Val([idk]),Val(Left([idk],InStr(1,[idk],"/")-1)))
ฟิลด์ที่2  Expr2: IIf(InStr(1,[idk],"/")=0,0,Val(Right([idk],Len([idk])-InStr(1,[idk],"/"))))
 
(ดูรูปตัวอย่าง) จากนั้นใช้ฟิลด์ที่สร้างใหม่นี้ เพื่อการเรียงลำดับตามที่ต้องการค่ะ
      Time: 0.1382s
    
      
		