กระทู้เก่าบอร์ด อ.Yeadram
1,931 3
URL.หัวข้อ /
URL
ฟังก์ชั่นแยกชื่อ-สกุล
เรียน อ.ทุกท่านครับ
ผมค้นหาใน Board กระทู้เก่าๆ เจอวิธีการแยกชื่อ-สกุล
แบบนี้
Split(Replace(strResult,";","|"),"|")(0)
ผมลองใช้ใน Query โดยเปลี่ยน
strResult เป็นฟิลด์ [F_name] (อนุสรณ์;รักการเรียน)
Split(Replace([F_name],";","|"),"|")(0)
ผลคือ Error ครับ และยังแจ้งว่า Split ไม่พบฟังก์ชั่นครับ
ต้องแก้อย่างไรครับ
หรือต้องเขียนเป็นฟังก์ใหม่ใน VBA แล้วจึงเรียกใช้ครับ
มีวิธีการเขียนอย่างไรครับ ขอคำแนะนำด้วย
ขอบคุณมากครับ
ผมค้นหาใน 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
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
ถ้ากด 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;
ก
ฟังก์ชั่นให้สร้างใน 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;
ก
Time: 0.2984s
อีกอย่างที่อยากให้ทดลองคือ ให้กด Ctrl-G เพื่อเปิด Immediate Window แล้วป้อน
? Split("อนุสรณ์;รักการเรียน",";")(0);Split("อนุสรณ์;รักการเรียน",";")(1)
ดูว่าผลลัพธ์ที่แสดงออกมาคือ อนุสรณ์รักการเรียน หรือไม่
ถ้า Error มัน Error ว่าอะไร รหัสอะไร เอาคำเต็มๆมาแสดงด้วย