ฟังก์ชั่นแยกชื่อ-สกุล
กระทู้เก่าบอร์ด อ.Yeadram

 1,931   3
URL.หัวข้อ / URL
ฟังก์ชั่นแยกชื่อ-สกุล

เรียน อ.ทุกท่านครับ
ผมค้นหาใน Board กระทู้เก่าๆ เจอวิธีการแยกชื่อ-สกุล
แบบนี้

Split(Replace(strResult,";","|"),"|")(0)

ผมลองใช้ใน Query โดยเปลี่ยน
strResult เป็นฟิลด์ [F_name] (อนุสรณ์;รักการเรียน)
Split(Replace([F_name],";","|"),"|")(0)
ผลคือ Error ครับ และยังแจ้งว่า Split ไม่พบฟังก์ชั่นครับ
ต้องแก้อย่างไรครับ

หรือต้องเขียนเป็นฟังก์ใหม่ใน VBA แล้วจึงเรียกใช้ครับ
มีวิธีการเขียนอย่างไรครับ ขอคำแนะนำด้วย
ขอบคุณมากครับ

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

1 @R12974
แสดงคิวรี่ใน SQL View แล้วก๊อปปี้ึ SQL Statement ทั้งหมดมาให้ดูหน่อยสิครับ

อีกอย่างที่อยากให้ทดลองคือ ให้กด Ctrl-G เพื่อเปิด Immediate Window แล้วป้อน

? Split("อนุสรณ์;รักการเรียน",";")(0);Split("อนุสรณ์;รักการเรียน",";")(1)

ดูว่าผลลัพธ์ที่แสดงออกมาคือ อนุสรณ์รักการเรียน หรือไม่

ถ้า Error มัน Error ว่าอะไร รหัสอะไร เอาคำเต็มๆมาแสดงด้วย
2 @R12975
เรียน อ.สันติสุข ครับ

ถ้ากด Ctrl-G เพื่อเปิด Immediate Window แล้วป้อน
? Split("อนุสรณ์;รักการเรียน",";")(0);Split("อนุสรณ์;รักการเรียน",";")(1)
ผลลัพธ์ คือ อนุสรณ์รักการเรียน ถูกต้องครับ ไม่แสดง Error อะไร

แต่พอไปใช้กับ Query
Split(Replace([F_NAME],";","|"),"|")(0)
ตอนแรกจะฟ้องว่า รูปแบบไม่ถูก ไม่ยอมให้ Save Query ผมเลยแก้เป็น
Split(Replace([F_NAME],";","|"),"|") ยอมให้ Save ไม่มี Error

SQL View
SELECT STUDENTS1.F_NAME, Split(Replace([F_NAME]," ","|"),"|") AS ANAME
FROM STUDENTS1;

พอสั่ง run qyery
ฟ้องว่า ฟังก์ชันที่ไม่ได้กำหนด 'Split' ในนิพจน์

ผมลองดูฟังก์ชันที่มีอยู่ทั้งหมด ก็ไม่มี Split ครับ
แต่ใน Immediate Window กลับใช้งานได้ครับ
ผมใช้ Access 2007
3 @R12976
อืม... ไม่ยอมให้ใช้จริงๆ เข้าใจว่าตัวแปล SQL จะไม่สนับสนุนผลที่เป็นอะเรย์ อย่างนี้ต้องไปสร้างเป็นฟังก์ชั่นของเราเองเพื่อตัดเอาส่วนที่ต้องการออกมา แล้วคิวรี่ก็เรียกฟังก์ชั่นนี้อีกที

ฟังก์ชั่นให้สร้างใน Module นะครับ
Public Function Split2(Str as string, Delim as string, N as integer) as String
   Split2 = Split(Str,Delim)(N-1)
End Function

ส่วนในคิวรี่ก็เป็น
SELECT STUDENTS1.F_NAME, Split2(Replace([F_NAME]," ","|"),"|",1) AS ANAME
FROM STUDENTS1;

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2984s