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

 2,340   7
URL.หัวข้อ / URL
ไม่ทราบว่าเราจะแปลงตัวเลขจากเลยอารบิคไปเป็นเลขไทยไ

ผมต้องการออกรายงานในรูปแบบวันเดือนปีเป็นภาษาไทยคับ เช่น
วันที่ 24 มีนาคม 2552 ไปเป็น
วันที่ ๒๔ มีนาคม ๒๕๕๒
ไม่ทราบว่าต้องเขียนฟังก์ชั่นยังไงครับ ต้องการเขียนใน textbox เพื่อนำไปออกรายงานครับผม ขอความกรุณาผู้รู้ช่วยชี้แนะด้วยคับ
** วันเดือนปีเก็บในรูปแบบข้อความคับ

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

1 @R01794
ลักษณะตัวเลข ใน ระบบ Access
จะยึดตามลักษณะที่เราตั้งไว้ใน system date ของ วินโดวส์ครับ

(control panel >> regional and settings)

หากเครื่องนั้นๆ ตั้งค่าตัวเลขของระบบ (ระบบปฎิบัติการ) เป็น อาระบิค ไปแล้วจะเขียนโค้ดเพื่อบังคับให้มันแสดงผลเป็นเลขไทย โดยส่วนตัวผมแล้วยังไม่เคยทำได้ และยังไม่คิดจะค้นหาวิธีทำเลยครับ และโดยความคิดความเชื่อส่วนตัวของผมเองอีกนั่นแหละครับ คิดว่า มันคงยาก ครับ
2 @R01796
ขอบคุณคุณ yeadram มากครับ มีท่านใดที่สามารถให้ความกระจ่างแก่ผมมากกว่านี้มั้ยครับ เพราะเมื่อก่อน MS Access 2.0 นั้นจะมีฟังก์ชั่นภาษาไทยคือ วววว ดดดด ปปปป หรืออาจจะใช้ตัว t นำหน้าก็จะทำให้แสดงเลขเป็นเลขไทยได้ แต่ต่อมาหลังจากที่พัฒนามาเป็น Access 2000 เแล้วฟังก์ชั้นที่เป็นประโยชน์ต่อภาษาไทยเหล่านี้ก็ได้หายไป (ไม่รู้เขาพัฒนาขึ้นหรือพัฒนาลง) หรือผมเองขุดหาไม่เจอก็ไม่รู้ จะลองพยายามขุดต่อไปครับ ห?กมีท่านใดที่สามารถทำได้ขอคำชี้แนะด้วยนะคร๊าบบ
3 @R01797
ผมเคยทำ โดยเขียนเป็นฟังก์ชั่น map รหัสแอสกี เอา
4 @R16052
พอดีต้องการเลขจำนวนหน้าเป็น เลขไทย
ผมเอารหัสในเวบนี้มาล่ะครับ
สร้าง โมดูล ขึ้นมา

Function Arabic2ThaiNum(strNum As String) As String
Dim i As Variant, J As Integer, strOut As String, K As Integer, X As Integer
For J = 1 To Len(strNum)
    i = Mid(strNum, J, 1)
    K = Asc(i)
    If K >= 48 And K <= 57 Then
        K = K + 240
        strOut = strOut & Replace(i, i, Chr(Val(i) + 240))
    Else
        strOut = strOut & i
    End If
Next J
Arabic2ThaiNum = strOut
End Function


Function Replace(ByVal Valuein As String, ByVal WhatToReplace As _
    String, ByVal Replacevalue As String) As String
   Dim temp As String, p As Long
   temp = Valuein
   p = InStr(temp, WhatToReplace)
   Do While p > 0
      temp = Left(temp, p - 1) & Replacevalue & _
          Mid(temp, p + Len(WhatToReplace))
      p = InStr(p + Len(Replacevalue), temp, WhatToReplace, 1)
   Loop
   Replace = temp
End Function
Function Arabic2Th(str As String) As String
    If IsNull(str) = True Then
        Arabic2Th = ""
        Else: Arabic2Th = Arabic2ThaiNum(str)
    End If
End Function
-------------------------
แล้วในตัวรายงานใช้ textbox
=Arabic2Th("หน้า " & [Page] & " ใน " & [Pages] & " หน้า")
-------------------------
แต่การแสดงผลจะช้าไปหน่อย ไม่ทราบมีใครพอมีวิธีที่ดีกว่านี้บ้าง ผมก็รอทำอยู่ครับ
5 @R16054
แต่ถ้าต้องการ วันที่ 24 มีนาคม 2552 ไปเป็น วันที่ ๒๔ มีนาคม ๒๕๕๒ ก็น่าจะทำได้ โดยแยกว้น เดือน ปี ออก แล้วก็ใส่ ฟังก์ชัน วัน กับ ปี ให้เป็นเลขไทย ไม่รู้วิธีผมมันจะเยิ่นเย้อไปหรือเปล่า หุหุ
6 @R16059
เห็นเค้าเขียนกันแค่นี้ก็พอแล้วครับ

Public Function Thai_Num(strExp As String) As String
    Dim i As Integer
    For i = 0 To 9
        strExp = Replace(strExp, i, Chr(Val(i) + 240))
    Next i
    Thai_Num = strExp
End Function

ตัวอย่าง: Thai_Num("ทดสอบตัวเลข 1 ถึง 9")
ผลลัพธ์: ทดสอบตัวเลข ๑ ถึง ๙

สำหรับวันที่: =Thai_Num(Format(#24/3/2552#,"d mmmm yyyy"))
7 @R16061
สุดยอดครับอาจารย์ TTT
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1686s