ทำ query เลือกข้อมูลก่อนหรือหลังเครื่องหมาย "/"
กระทู้เก่าบอร์ด อ.Yeadram

 2,256   8
URL.หัวข้อ / URL
ทำ query เลือกข้อมูลก่อนหรือหลังเครื่องหมาย "/"

ทำ query เลือกข้อมูลก่อนหรือหลังเครื่องหมาย "/" อย่างไรครับ โดยที่ไม่เอาเครื่องหมาย / เช่น ข้อมูล
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

1 @R12417
ศึกษาฟังก์ชั่นจาก help ครับ แล้วนำมาประยุกต์ใช้
instr(), left(), right(), mid(), len()

เป็นฟังก์ชั่นพื้นฐานง่ายๆ ครับ จำเป็นต้องรู้ครับ
2 @R12421
เห็นด้วยนะครับ หากคุณ Smile ต้องการใช้ง่าย Access แล้ว ฟังก์ชั่นพื้นฐานควรต้องรู้ครับ จะได้เข้าใจคำตอบของผู้ตอบได้อย่างกระจ่าง (ผู้ตอบจะได้ไม่ต้องอธิบายมาก บางครั้งการเขียนอธิบายให้เข้าใจ ไม่ใช่เรื่องง่ายเลยสำหรับผม)
ขยายความ แนวคิดของคำถามให้อ่านหน่อยแล้วกันนะครับ
ตัวอย่าง 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"))

ขอบคุณครับ
5 @R23758
IIf(len(ฟิล1)=16,"xxx","yyy")
6 @R23759
ทำแล้วครับ Error เหมือนเดิม
7 @R23767
ทำได้แล้วครับ แต่ขออนุญาตถามเพิ่มครับ ถ้าต้องการค่าสเปซบาร์ที่ว่างๆ ออก ใช้คำสั่งอะไรครับ
8 @R23769
เอา spacebar ออกจาก text ใช้ function Trim("text") ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3146s