กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
336 2
URL.หัวข้อ /
URL
Query - รบกวน อ.สุภาพ เรื่องวิธีการเลือก หรือตัด Digi ที่ต้องการ ใน Field หนึ่งๆ
คือผมทำ Query ที่ Field หนึ่ง ข้อมูลใน Field เช่น
ชบ152/25-01
ชบ152/25-02
ชบ152/25-03
ชบ1502/25-01
ชบ1502/25-02
...
คือ ผมต้องการข้อมูลทุก Digi ยกเว้น
1). ไม่เอา Digi 3 ตัวท้าย
2). ไม่เอา Digi ที่เป็น ตัวอักษร
3). ไม่เอา Digi ที่เป็น ตัวเลข
4). ไม่เอา Digi ที่เป็น เครื่องหมาย + , - , * , / , เว้นวรรค และ อื่นๆ
ผมลองแล้ว ไม่สามารถทำได้ รบกวน อ.สุภาพ แนะนำด้วยครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชบ152/25-01
ชบ152/25-02
ชบ152/25-03
ชบ1502/25-01
ชบ1502/25-02
...
คือ ผมต้องการข้อมูลทุก Digi ยกเว้น
1). ไม่เอา Digi 3 ตัวท้าย
2). ไม่เอา Digi ที่เป็น ตัวอักษร
3). ไม่เอา Digi ที่เป็น ตัวเลข
4). ไม่เอา Digi ที่เป็น เครื่องหมาย + , - , * , / , เว้นวรรค และ อื่นๆ
ผมลองแล้ว ไม่สามารถทำได้ รบกวน อ.สุภาพ แนะนำด้วยครับ
ขอบพระคุณมากๆ ครับ
Suchat
2 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R00355
คงต้องใช้ Left(), Right(), Mid() เข้ามาช่วยครับ
1). ไม่เอา Digi 3 ตัวท้าย
? Left("ชบ152/25-01",len("ชบ152/25-01")-3)
2). ไม่เอา Digi ที่เป็น ตัวอักษร
3). ไม่เอา Digi ที่เป็น ตัวเลข
4). ไม่เอา Digi ที่เป็น เครื่องหมาย + , - , * , / , เว้นวรรค และ อื่นๆ
ต้องใช้ Function เข้ามาช่วย ผมลองทำตัวนี้ขึ้นมา แต่ยังไม่ครอบคลุมทุกตัว ลองปรับปรุงใช้ดูครับ
Function RemoveChar(strText As String, intType As Integer) As String
Dim I As Integer, strTrim As String, strChar As String
strTrim = strText
If Len(strTrim) = 0 Then
Exit Function
End If
strText = ""
' äÁèàÍÒ Digi ·Õèà»ç¹ à¤Ã×èͧËÁÒ - , / , àÇé¹ÇÃä
If intType = 1 Then
For I = 1 To Len(strTrim)
strChar = Mid(strTrim, I, 1)
' Remove "/", " " and "-" from the string
If Asc(strChar) <> 47 And Asc(strChar) <> 45 And Asc(strChar) <> 32 Then
strText = strText & strChar
'Debug.Print strText
End If
Next I
' äÁèàÍÒ Digi ·Õèà»ç¹ µÑÇàÅ¢
ElseIf intType = 2 Then
For I = 1 To Len(strTrim)
strChar = Mid(strTrim, I, 1)
' Remove "/", " " and "-" from the string
If Asc(strChar) > 57 Or Asc(strChar) < 48 Then
strText = strText & strChar
'Debug.Print strText
End If
Next I
' äÁèàÍÒ Digi ·Õèà»ç¹ µÑÇÍÑ¡ÉÃ
ElseIf intType = 3 Then
For I = 1 To Len(strTrim)
strChar = Mid(strTrim, I, 1)
' Remove "/", " " and "-" from the string
If (Asc(strChar) > 206 Or Asc(strChar) < 65) Then
strText = strText & strChar
'Debug.Print strText
End If
Next I
End If
RemoveChar = strText
End Function
? RemoveChar("ชบ152/25-01",3)
152/25-01
ªº/-
ªº1522501
ถ้าไม่เอา Digi ที่เป็น ตัวอักษร
? RemoveChar("ชบ152/25-01",3)
ไม่เอา Digi ที่เป็น ตัวเลข
? RemoveChar("ชบ152/25-01",2)
ชบ/-
และไม่เอา Digi ที่เป็น เครื่องหมาย - , / , เว้นวรรค
? RemoveChar("ชบ152/25-01",1)
ชบ1522501
หลักการทำ
ผมจะใช้ Asc() และ Chr() เข้ามาช่วยหาตัวอักษรหรือกลุ่มตัวอักษรที่ต้องการ เช่น
? asc("¡")
161
? chr(66)
B
ลองปรับฟังก์ชั่นให้ครอบคลุมดูครับ ผมว่าถ้าทายดีมากเลย เช่น ไม่เอา *, +
2 @R00356
สำหรับคำตอบ ข้อที่ 1 ผมลองดูแล้วครับ ทำได้แล้วครับ
ส่วนคำตอบ ข้อที่ 2-4 ผมจะลองดูครับ แล้วจะแจ้งให้ อ.สุภาพ ทราบอีกครั้ง
ขอบพระคุณ อ.สุภาพ มากๆ นะครับ
Suchat
Time: 0.1158s