แปลงเลขอาราบิกเป็นไทย
กระทู้เก่าบอร์ด อ.Yeadram

 5,114   6
URL.หัวข้อ / URL
แปลงเลขอาราบิกเป็นไทย

แปลงเลขอาราบิกเป็นไทยอย่างไรครับ เช่น วันเดือนปีเกิดเป็นเลขไทยครับ
ช่วยด้วยครับ

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

1 @R06320
ไม่รู้วิธีลัดนะครับ
ลองๆ ไล่ รหัส แอสกี ดู รู้แค่ว่า ตัวเลข อารบิค เริ่มจาก 48
ส่วนตัวเลขไทยเริ่มจาก 240 ครับ

ถ้าเป็นงานของผมและยังหาวิธีลัดไม่ได้ล่ะก็ ผมก็จะเขียนฟังก์ชั่นขึ้นมาใช้เอง
เช่น
Public Function ThaiNum(AbNum As String)
If Len(AbNum) < 1 Then
ThaiNum = vbNull
Else

Dim i As Integer
Dim sq As String
sq = ""
For i = 1 To Len(AbNum)
If Asc(Mid(AbNum, i, 1)) >= 48 And Asc(Mid(AbNum, i, 1)) <= 57 Then
sq = sq & Chr(Asc(Mid(AbNum, i, 1)) + 192)
Else
sq = sq & Mid(AbNum, i, 1)
End If
Next
ThaiNum = sq
End If
End Function


ตัวอย่างเวลานำไปใช้ก็เช่น
ใน textbox ที่จะแสดงผลวันเกิด (bthDate)
แทนที่เราจะใส่ control source ว่า bthDate
เราก็จะใส่ =Thainum(cstr(bthDate)) แทน
ลองดูครับ ถ้าหาวิธีลัดยังไม่ได้นะครับ ถ้าหาได้แล้วก็เอามาบอกมาเล่าให้ผมได้รู้ด้วยนะครับ
2 @R06330
ขอบคุณมากครับคุณ Yeadram ผมขออนุญาต นำ ฟังก์ชั่นที่คุณให้มา ประยุกต์ดูนะครับ
3 @R10568
ขอบพระคุณอย่างสูงคับ ใช้งานดีมาก ๆ
4 @R16682
ในกรณีที่ต้องการแสดงผลตัวเลข หรือพิมพ์ตัวเลขออกทางเครื่องพิมพ์เป็นเลขไทย ผ่านรายงาน หรือฟอร์มใน MS Access ท่านสามารถกำหนดคุณสมบัติของ Control ที่มีชื่อว่า "รูปร่างตัวเลข" หรือถ้าเป็นอังกฤษ "Shap number" ให้ = "national"
เหตุที่ตัวเลขกลายเป็นไทยในกรณีนี้คือ โปรแกรมจะดึงค่าตัวเลขจาก Region And Language ใน Control panel มาเป็นข้อกำหนดการแสดง จึงทำให้ตัวเลขกลายเป็นเลขไทย

สมติต้องการทำให้ตัวเลขใน Textbox เป็นเลขไทย ก็แค่ตั้งคุณสมบัติ "รูปร่างตัวเลข" หรืออีกชื่อคือ "Shap number" เป็นค่า National เท่านั้นเองครับ
5 @R22574
แล้วถ้าต้องการให้เลขไทยมีตัวจุลภาคและจุดทศนิยมอีก 2 ตำแหน่ง ต้องทำยังไงคะ
6 @R22577
ถ้าจะใช้ฟังก์ชั่นของผมไปประยุกต์
ให้ปรับเปลี่ยนตัวเลขเป็นรูปแบบที่ต้องการก่อน แล้วค่อยส่งเข้าฟังก์ชั่นครับ

เช่น คุณมีตัวเลข 12345678
ก่อนจะส่งเข้าฟังก์ชั่น ก็ปรับรูปแบบมันให้แบบทีคุณต้องการก่อน

Dim dbYourNum as double
Dim txYourNum as string
dbYourNum = cdbl("12345678")   ' มันจะแปลง datatype ของตัวเลขที่เห็นนี้ เป็น double แน่นอน เป็นที่แน่ใจว่ามันจะไม่ประมวลผลผิดพลาด
txYourNum = format(dbYourNume, "#,###.00") ' คำสั่งนี้จะทำให้ข้อมูลของคุณ แปลงกลับมาเป็น datatype แบบ text และเขียนในรูปแบบที่เราต้องการ (ศึกษาเพิ่มเติมจากการใช้ฟังก์ชั่น format() ได้จาก help)

แล้วค่อยนำข้อมูลของคุณส่งเข้าฟังก์ชั่นครับ
txYourNum = ThaiNum(txYourNum)

ถ้ามั่นใจว่า เข้าใจตามลำดับก็สามารถย่อทั้งหมดได้ในบรรทัดเดียว เช่น
txYourNum = ThaiNum(format(cdbl("12345678"), "#,###.00"))


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