กระทู้เก่าบอร์ด อ.Yeadram
2,413 7
URL.หัวข้อ /
URL
ไม่ทราบว่าเราจะแปลงตัวเลขจากเลยอารบิคไปเป็นเลขไทยไ
ผมต้องการออกรายงานในรูปแบบวันเดือนปีเป็นภาษาไทยคับ เช่น
วันที่ 24 มีนาคม 2552 ไปเป็น
วันที่ ๒๔ มีนาคม ๒๕๕๒
ไม่ทราบว่าต้องเขียนฟังก์ชั่นยังไงครับ ต้องการเขียนใน textbox เพื่อนำไปออกรายงานครับผม ขอความกรุณาผู้รู้ช่วยชี้แนะด้วยคับ
** วันเดือนปีเก็บในรูปแบบข้อความคับ
วันที่ 24 มีนาคม 2552 ไปเป็น
วันที่ ๒๔ มีนาคม ๒๕๕๒
ไม่ทราบว่าต้องเขียนฟังก์ชั่นยังไงครับ ต้องการเขียนใน textbox เพื่อนำไปออกรายงานครับผม ขอความกรุณาผู้รู้ช่วยชี้แนะด้วยคับ
** วันเดือนปีเก็บในรูปแบบข้อความคับ
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
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] & " หน้า")
-------------------------
แต่การแสดงผลจะช้าไปหน่อย ไม่ทราบมีใครพอมีวิธีที่ดีกว่านี้บ้าง ผมก็รอทำอยู่ครับ
ผมเอารหัสในเวบนี้มาล่ะครับ
สร้าง โมดูล ขึ้นมา
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"))
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
Time: 0.3627s
จะยึดตามลักษณะที่เราตั้งไว้ใน system date ของ วินโดวส์ครับ
(control panel >> regional and settings)
หากเครื่องนั้นๆ ตั้งค่าตัวเลขของระบบ (ระบบปฎิบัติการ) เป็น อาระบิค ไปแล้วจะเขียนโค้ดเพื่อบังคับให้มันแสดงผลเป็นเลขไทย โดยส่วนตัวผมแล้วยังไม่เคยทำได้ และยังไม่คิดจะค้นหาวิธีทำเลยครับ และโดยความคิดความเชื่อส่วนตัวของผมเองอีกนั่นแหละครับ คิดว่า มันคงยาก ครับ