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

 1,796   5
URL.หัวข้อ / URL
ตัดคำหลังเครื่องหมาย

เรียนท่านผู้ทราบครับ ผมมีเรื่องจะรบกวนขอความรู้หน่อยครับ
คือผมมีข้อมูลดังนี้ครับ
D 09470 91 01702,D 09470 91 01703,D 020 17 0002 00472
ผมอยากทราบวิธีตัดคำดังตัวอย่างข้างบนนี้ในคิวรี่ให้ออกเป็นแบบนี้ครับ
            ชุดที่ 1                         ชุดที่ 2                             ชุดที่ 3
D 09470 91 01702      D 09470 91 01703        D 020 17 0002 00472
คือผมอยากจะตัดที่อยู่หลังเครื่องหมาย "," ครับ
ผมลองทำใน Query ดังนี้ครับ
ชดที่ 1 : Trim(Left([ชื่อฟิวด์],InStrRev([ชื่อฟิวด์],",")-1))
แต่พอชุดที่ 2,3 ผมไม่ทราบว่าจะต้องใช้คำสั่งว่าอย่างไรครับผม

รบกวนทุกท่านด้วยครับผม

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

1 @R18225
ผมนึกถึงฟังก์ชั่น Split() นะครับ ง่ายดี แต่ทีนี้ฟังก์ชั่นแบบนี้มันไม่สามารถใช้ตรงๆกับคิวรี่ได้เพราะมันส่งค่าเป็น array เลยต้องมีตัวรับค่าก่อน ลองทำดังนี้ดูครับ

1. ใส่โค๊ดลงใน Module

Public Function SplitA(Str As String, Delim As String, N As Integer) As String
   SplitA = Split(Str, Delim)(N - 1)
End Function

2. ในคิวรี่
ชุดที่ 1: SplitA([ชื่อฟิลด์],",",1)
ชุดที่ 2: SplitA([ชื่อฟิลด์],",",2)
ชุดที่ 3: SplitA([ชื่อฟิลด์],",",3)

ปรับใช้ดูครับ
2 @R18226
ผมต้องขอขอบพระคุณ คุณ TTT อย่างมากเลยครับ ที่ได้ให้ความรู้ดีๆกับผม
3 @R18249
คุณ TTT ครับ ผมลืมแจ้งคุณ TTT ไปครับว่า คืองานของผม จะมีการเลือกจาก Combobox ครับ ผมกำหนดให้เลือกสูงสุดได้แค่ 3 ชุดครับ แต่บางครั้ง อาจจะเลือกแค่ 1 ชุด,2 ชุด หรืออาจจะครบ 3 ชุด แต่พอผมทำตามคุณ TTT ก็ใช้ได้ดีมากเลยครับ แต่มันจะต้องเลือกให้ครบ 3 ชุด ผมลองเลือกแค่ 1 ชุด หรือ 2 ชุด มันจะขึ้นฟ้องที่ฟังก์ชั่นอันนี้ครับ
ที่ต้องการคือ เราอาจจะเลือกแค่ 1 ชุด หรือ 2 ชุด หรือ 3 ชุด หรืออาจไม่เลือกเลยก็ให้มันแสดงเป็นค่าว่างก็ได้ครับผม
ต้องรบกวนคุณ TTT อีกครั้งครับผม
4 @R18253
อื่มไม่ค่อยเข้าใจนะ หมายถึงข้อมูลไม่แน่นอนเช่น
บางเรคคอร์ดก็มี 3 ช่วง
D 09470 91 01702,D 09470 91 01703,D 020 17 0002 00472
บางเรคคอร์ดก็มี แค่ 2
D 09470 91 01703,D 020 17 0002 00472

อะไรอย่างนี้ป่าวครับ ไงลองใส่คำสั่งกัน Error ดูก่อนครับ โดยเปลี่ยนฟังก์ชั่นที่เคยให้ไปเป็นแบบนี้แทนครับ

Public Function SplitA(Str As String, Delim As String, N As Integer) As String
    Dim Temp As String
On Error GoTo Err0
    Temp = Split(Str, Delim)(N - 1)
    SplitA = Temp
Err0: Exit Function
End Function

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