กระทู้เก่าบอร์ด อ.Yeadram
        
           2,571   8		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        ทำ query เลือกข้อมูลก่อนหรือหลังเครื่องหมาย "/"      
    
      ทำ query เลือกข้อมูลก่อนหรือหลังเครื่องหมาย "/" อย่างไรครับ โดยที่ไม่เอาเครื่องหมาย / เช่น ข้อมูล
123/111 เป็น 123 กับ 111
23/11 เป็น 23 กับ 11
12/111 เป็น 12 กับ 111 ครับ ขอบคุณมากครับ
    
  123/111 เป็น 123 กับ 111
23/11 เป็น 23 กับ 11
12/111 เป็น 12 กับ 111 ครับ ขอบคุณมากครับ
				8 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R12421    
        
  
      เห็นด้วยนะครับ หากคุณ Smile ต้องการใช้ง่าย Access แล้ว ฟังก์ชั่นพื้นฐานควรต้องรู้ครับ จะได้เข้าใจคำตอบของผู้ตอบได้อย่างกระจ่าง (ผู้ตอบจะได้ไม่ต้องอธิบายมาก บางครั้งการเขียนอธิบายให้เข้าใจ ไม่ใช่เรื่องง่ายเลยสำหรับผม)
ขยายความ แนวคิดของคำถามให้อ่านหน่อยแล้วกันนะครับ
ตัวอย่าง 123/111
แนวคิดคือ
- เราต้องหาตำแหน่งของอักษร / ของข้อมูลว่าอยู่ตำแหน่งที่เท่าไรก่อน ด้วยคำสั่ง InStr() (เพราะเนื่องจากข้อมูลที่คุณมี หลักของเลขไม่แน่นอนอาจเป็น 123 หรือ 23 ซึ่งเราไม่รู้ว่าจะเอากี่หลักกันแน่)
InStr("123/111","/") = 4
- จากนั้นเราก็ค่อยใช้ฟังก์ชั่น Left() ตัดเอาเฉพาะข้อมูลทางซ้ายตามจำนวนที่ได้จากการ instr() โดยลบด้วย 1 เพราะไม่เอาอักษร /
= 123
- ช่วงหลัง ก็ทำคล้ายกัน โดยใช้ฟังก์ชั่น Mid() หรือ Right() ก็ได้ ถ้าใช้ Mid() ก็คือการเริ่มที่อักษรตำแหน่งที่ 4 บวกด้วย 1 เพราะไม่เอา / ส่วนตำแหน่งจบถ้าไม่ใส่ก็คือ เอาจนจบข้อความ
= 111
- หากใช้ Right() ก็ต้องใช้ฟังก์ชั่น Len() หากจำนวนอักษรทั้งหมดด้วย แล้วนำมาลบกัน ให้ได้ตำแหน่งที่ต้องการ
ประมาณนี้นะครับ คงเป็นประโยชน์บ้าง
สำหรับรูปแบบฟังก์ชั่น ดูได้จากการกด F1 ของหน้าต่าง VBA นะครับ
    
  ขยายความ แนวคิดของคำถามให้อ่านหน่อยแล้วกันนะครับ
ตัวอย่าง 123/111
แนวคิดคือ
- เราต้องหาตำแหน่งของอักษร / ของข้อมูลว่าอยู่ตำแหน่งที่เท่าไรก่อน ด้วยคำสั่ง InStr() (เพราะเนื่องจากข้อมูลที่คุณมี หลักของเลขไม่แน่นอนอาจเป็น 123 หรือ 23 ซึ่งเราไม่รู้ว่าจะเอากี่หลักกันแน่)
InStr("123/111","/") = 4
- จากนั้นเราก็ค่อยใช้ฟังก์ชั่น Left() ตัดเอาเฉพาะข้อมูลทางซ้ายตามจำนวนที่ได้จากการ instr() โดยลบด้วย 1 เพราะไม่เอาอักษร /
Left("123/111", InStr("123/111", "/") - 1)
= 123
- ช่วงหลัง ก็ทำคล้ายกัน โดยใช้ฟังก์ชั่น Mid() หรือ Right() ก็ได้ ถ้าใช้ Mid() ก็คือการเริ่มที่อักษรตำแหน่งที่ 4 บวกด้วย 1 เพราะไม่เอา / ส่วนตำแหน่งจบถ้าไม่ใส่ก็คือ เอาจนจบข้อความ
Mid("123/111", InStr("123/111", "/") + 1)
= 111
- หากใช้ Right() ก็ต้องใช้ฟังก์ชั่น Len() หากจำนวนอักษรทั้งหมดด้วย แล้วนำมาลบกัน ให้ได้ตำแหน่งที่ต้องการ
Right("123/111", Len("123/111") - InStr("123/111", "/"))
ประมาณนี้นะครับ คงเป็นประโยชน์บ้าง
สำหรับรูปแบบฟังก์ชั่น ดูได้จากการกด F1 ของหน้าต่าง VBA นะครับ
        
    3 @R12426    
        
  
      ขอบคุณมากๆครับทั้งสองท่าน พอได้แนวคิดแล้วครับ เพราะที่ผ่านมาผมใช้ Left กับ Right แล้ว ถ้าจำนวนเลขแต่ละ record ไม่เท่ากันจะได้  /  มาด้วย ขอบคุณมากครับ    
    
  
        
    4 @R23757    
        
  
      สมมติมีข้อมูลที่อยู่ในฟิล (ฟิล1) 8 หลัก กับ 16 หลัก
1.)12345PP0580B01(14 หลัก)
2.) 50100002 (8 หลัก)
ต้องการเขียนเงื่อนไขในคิวรีว่า ถ้า 14 หลัก ให้เท่ากับ "xxx" ถ้าไม่ใช่ให้เท่ากับ "yyy"
ไม่ทราบว่าต้องเขียนยังไงครับ ผมลองเขียนแบบนี้แล้วมันขึ้น #Error ครับ
IIf(len((ฟิล1)=16,"xxx","yyy"))
ขอบคุณครับ
    
  1.)12345PP0580B01(14 หลัก)
2.) 50100002 (8 หลัก)
ต้องการเขียนเงื่อนไขในคิวรีว่า ถ้า 14 หลัก ให้เท่ากับ "xxx" ถ้าไม่ใช่ให้เท่ากับ "yyy"
ไม่ทราบว่าต้องเขียนยังไงครับ ผมลองเขียนแบบนี้แล้วมันขึ้น #Error ครับ
IIf(len((ฟิล1)=16,"xxx","yyy"))
ขอบคุณครับ
        
    5 @R23758    
        
  
      IIf(len(ฟิล1)=16,"xxx","yyy")
    
    
  
        
    6 @R23759    
        
  
      ทำแล้วครับ Error  เหมือนเดิม    
    
  
        
    7 @R23767    
        
  
      ทำได้แล้วครับ แต่ขออนุญาตถามเพิ่มครับ ถ้าต้องการค่าสเปซบาร์ที่ว่างๆ ออก ใช้คำสั่งอะไรครับ    
    
  
        
    8 @R23769    
        
    
      เอา spacebar ออกจาก text ใช้ function Trim("text") ครับ    
    
  
      Time: 0.0627s
    
      
		
instr(), left(), right(), mid(), len()
เป็นฟังก์ชั่นพื้นฐานง่ายๆ ครับ จำเป็นต้องรู้ครับ