แปลงตัวเลขเป็นตัวอักษร
กระทู้เก่าบอร์ด อ.Yeadram

 26,008   39
URL.หัวข้อ / URL
แปลงตัวเลขเป็นตัวอักษร

สร้าง function ตามนี้ครับ

Public Function BahtText(A As Variant)
On Error Resume Next
BahtText = "( " & Excel.WorksheetFunction.BahtText(A) & " )"
End Function

ประมาณนี้ครับผม

39 Reply in this Topic. Dispaly 2 pages and you are on page number 2

21 @R06560
ต้องลดระดับของ Macro Security ให้เป็น Medium หรือ Low ครับ โดยไปที่เมนู Tools - Macro - Security

ส่วนการคอมไพล์ ให้ไปที่ Visual Basic Editor แล้วไปที่เมนู Debug - Compile ...
22 @R06561
ผมไปที่เมนู Tools - Macro - ???? ไม่มี Security มีแต่ขึ้น Macro Name : ด้านล่างเป็นกรอบให้ใส่..... ไม่รู้ผมเข้าผิดที่หรือเปล่า :)
23 @R06562
อ.สันติสุขครับ รบกวนอาจารย์มากเลย
ผมจะลองหาดูอีกทีครับ
เดี๋ยวผมจะไปลองทำ DB เปล่าอีกอันทดสอบ Function อีกทีครับ
ได้ผลอย่างไรจะแจ้งให้ทราบครับ
ขอบคุณอาจารย์มากครับ :)
24 @R06563
บางครั้งเมนูมันจะถูกซ่อนอยู่ค่ะ ลองขยายออกดูนะคะ



เมื่อขยายออกแล้วจะได้อย่างรูปถัดไปค่ะ

25 @R06564


ไม่ทราบว่าตรงตามที่ต่องการหรือเปล่า
26 @R06567
ผมใช้ Access 2007 ครับ ไม่ทราบว่าเข้าตรงไหนครับ :)

ขอบคุณครับ
27 @R06568
เรียน อ.สันติสุข ครับ
ผมลองสร้าง DB ใหม่ มี Table และ Form อย่างละอัน
ใช้ Function Bahttext จาก Excel
ผล สามารถแสดงผลตัวอักษรได้ครับ
DB เดิมผมคงมีอะไรผิดแน่ๆ แต่ไม่รู้ว่าผิดตรงไหน
28 @R06569
ผมลองเอา Function เดิม ใน DB เดิม ส่งออกเข้าไปใน DB ใหม่ เพื่อทดสอบ
ผล ขึ้น #Name?
และพอเอา Function Bahttext - Excel กลับไปใช้ใหม่ กลับไม่ได้อีกครับ ขึ้น #Name?
29 @R06570

ขอบคุณครับ ท่านอาจารย์สันติสุข

ผมลองแล้วครับ โดยการลองสร้างฐานข้อมูลใหม่เลยครับ ใส่ฟังก์ชั่นเข้าไป หลังจากนั้นเรียกใช้ได้ครับ

กลับมาที่ฐานข้อมูลเดิม ทดลองลบ โมดูลนั้นแล้วก็อปปี้ลงไปใหม่ คราวนี้ใช้ได้ครับ
งงๆเหมือนกัน คงมีปัญหาตอบก็อปปี้ละมั้งครับ เพราะผมใช้การเขียนโปรแกรมผ่าน เวอร์ชวลแมชชีนเอ็กพีโหมด แต่เวลาใช้เน็ตผมใช้ ที่วินโดวส์เซเว่นครับ
30 @R06572
สวัสดีครับ ลองโหลดตามที่ Link ไปศึกษาดูนะครับ
ถ้าไม่ได้ก็เมล์มาปรึกษากับผมได้ครับ kingjun_o@hotmail.com

http://f1.uploadfile.biz/file/?i=ENEVMEIEIMWEDW


ขอให้โชคดีนะครับ
31 @R06573
สามารถทำได้แล้วครับ
พอแก้ไข
เรื่องของมาโคร VBA ถูกปิดการใช้งาน
โดยเมื่อตอนเริ่มต้นเปิดฐานข้อมูลจะขึ้นฟ้องว่า
"คำเตือนเกี่ยวกับความปลอดภัย เนื่อหาบางอย่างในฐานข้อมูลถูกปิดการใช้งาน"
มาโคร VBA ถูกปิดการใช้งาน
กำหนดให้ทำงาน

Function Bahttext ก็ใช้งานได้เลย

แก้ไขปัญหาเรื่อง แบบสอบถามชนิดปรับปรุงข้อมูล ที่สร้างไว้
โปรแกรมจะขึ้นข้อความด้านล่างว่า
"การกระทำหรือเหตุการณ์ถูกบล็อกโดยโหมดปิดการใช้งาน"
ไปด้วยหร้อมกัน

ก็ขอขอบคุณ อ.สันติสุขมากครับ ดึกเลยเมื่อวาน
รวมถึงสมาชิกคนอื่นๆด้วยครับ

ขอบคุณมากครับ :)
32 @R06582
เรื่อง Security ใน Access 2007 มันเปลี่ยนไปจากเวอร์ชั่นเดิม ลองเอาไปอ่านดูนะครับ

Security Considerations and Guidance for Access 2007
http://msdn.microsoft.com/en-us/library/bb421308.aspx
33 @R06697
ให้ไปอีกอันละกันครับ เอามาจากเว็บเมื่อ 8 ปีที่แล้วเก็บไว้นานเลยเอามาให้ปัดฝุ่น
********ขอบคุณคนที่เขียนเอาไว้ อยากเอ่ยนาม แต่จำไม่ได้แล้ว********


Option Compare Database
Public Function BahtText(InputCurrency As Currency) As String
'-------------------------------------------------------------------------------------------------------------------------
' Function: BahtText
' Purpose: converts a number to a string that spells out the number in Thai
'-------------------------------------------------------------------------------------------------------------------------

      Dim DigitSave, UnitSave, DigitName, DigitName1, UnitName, Satang, StrTmp, StrTmp1 As String
      Dim DecimalValue, CurrDigit, PrevDigit, StrLen, DigitBase, ScanDigit As Integer
      Dim IntegerValue As Double

      ' init variable
      DigitName = "ศูนย์หนึ่งสอง สาม สี่ ห้า หก   เจ็ด แปด เก้า "    ' name of digit number
      DigitName1 = "          ยี่ สาม สี่ ห้า หก   เจ็ด แปด เก้า "          ' name of digit number in another call
      UnitName = "แสน ล้าน สิบ ร้อย พัน หมื่น"                               ' name of digit base
      BahtText = ""
      Satang = ""

      ' check for negative val
      If InputCurrency < 0 Then
          InputCurrency = -InputCurrency
          BahtText = "ลบ"
      End If

      StrTmp1 = Format(InputCurrency, "0.00")             ' rounds up to 2   decimals
      InputCurrency = val(StrTmp1)
      IntegerValue = Int(InputCurrency)                           ' get   integer value
      DecimalValue = (InputCurrency - IntegerValue) * 100             ' get 2   decimal values

      ' check for zeto val
      If IntegerValue = 0 And DecimalValue = 0 Then
          Satang = "ศูนย์บาทถ้วน"
          GoTo locExit
      End If

      ' translate integer val to name if necesary
      If IntegerValue > 0 Then
          StrTmp = Left(StrTmp1, Len(StrTmp1) - 3)        ' get string of   integer val
          StrLen = Len(StrTmp)                                 ' get string   len
          CurrDigit = 0

          ' scan integer string and compute its name
          For ScanDigit = StrLen To 1 Step -1
              ' save previous digit
              PrevDigit = CurrDigit
              ' get digit base
              DigitBase = ScanDigit Mod 6
              ' convert digit character to numeric value
              CurrDigit = Asc(Mid(StrTmp, StrLen - ScanDigit + 1, 1)) - 48
              ' get unit name from its base
              UnitSave = RTrim(Mid(UnitName, DigitBase * 5 + 1, 5))
              ' get number name from Currdigit, depends on the digit base
              DigitSave = RTrim(Mid(IIf(DigitBase = 2, DigitName1, DigitName), CurrDigit * 5 + 1, 5))

              ' base ten and number 1
              If DigitBase = 1 And CurrDigit = 1 And PrevDigit <> 0 Then
                  DigitSave = "เอ็ด"
              End If

              ' first digit base may be base million or 1
              If DigitBase = 1 And ScanDigit < 6 Then
                  UnitSave = ""
              End If

              ' ignore add digit name in result string if it is zero
              If CurrDigit <> 0 Then
                  BahtText = BahtText + DigitSave + UnitSave
              ElseIf DigitBase = 1 Then
                  BahtText = BahtText + UnitSave
              End If
          Next ScanDigit

          BahtText = BahtText + "บาท"
      End If

      ' if no decimal value
      If DecimalValue = 0 Then
          Satang = "ถ้วน"
      ' compute decimal val to name, there are only 2 digit
      Else
          StrTmp = Right(StrTmp1, 2)

          ' name ot first digit
          CurrDigit = Asc(Left(StrTmp, 1)) - 48
          PrevDigit = CurrDigit

          If CurrDigit > 0 Then
              Satang = RTrim(Mid(DigitName1, CurrDigit * 5 + 1, 5)) + "สิบ"
          End If

          ' name of last digit
          CurrDigit = Asc(Right(StrTmp, 1)) - 48

          If CurrDigit > 0 Then
              Satang = Satang + IIf(CurrDigit = 1 And PrevDigit <> 0, "เอ็ด", RTrim(Mid(DigitName, CurrDigit * 5 + 1, 5)))
          End If

          ' store result and unit
          Satang = Satang + "สตางค์"
      End If

locExit:
      ' store result to BahtText
      BahtText = BahtText + Satang
End Function

Function FrmLoaded(TempFrm As Form)
Dim result As Boolean
FrmLoaded = SysCmd(acSysCmdGetObjectState, acForm, TempFrm) And acObjStateOpen <> False
If FrmLoaded(TempFrm) = True Then
    result = True
    Debug.Print TempFrm.Name
End If
End Function

หมายเหต: สร้างเป็นโมดูลนะครับ แล้วเรียกใช้ฟังชั่น

dim bEncode as String
bEncode = Bahttext(ค่าที่ต้องการให้แปลง)
34 @R06879
น่าจะเป็นของ อ.สุภาพ หรือเปล่าครับ
35 @R07058
ทำไม่ได้ค่ะ
พอเอา function Bahttext ไปใช้ใน Report (ป้ายผนึก) มันฟ้องขึ้นกรอบว่า ใส่ค่าพารามิเตอร์ "ฺBahttext"
ทำให้ 2007 น่ะค่ะ
พึ่งจะหัดทำน่ะค่ะช่วยหน่อยน่ะค่ะ
36 @R07060
คุณ เด็กใหม่พึ่งหัดเรียน (ชื่อสมมติทำไมยาวจังพิมพย์ยากแฮะ อิอิ)
คุณเอาฟังก์ชั่นนี้ไปวางในโมดูลใหม่หรือเปล่า
หรือเอาไปวางในรายงาน

คุณต้องเอาไปวางในโมดูลเท่านั้นนะครับ ห้ามวางในที่อื่นๆ
วางเสร็จแล้วให้ลองคอมไพล์ดู เผื่อมีอะไรไม่รองรับกัน เพราะดูท่าทางฟังก์ชั่นนี้เขียนไว้นานแล้ว หรือ access2007 ของคุณตั้งค่าอะไรให้ขัดแย้งกันหรือเปล่า อันนี้เราต้องลองตรวจสอบดู การสั่งคอมไพล์ เป็นการตรวจสอบที่ง่ายที่สุดแล้วครับ ถ้ามี error อะไรแล้วแก้ไขไม่ได้ มาโพสต์ถามอีกที

แต่ถ้ากรณีคุณวางฟังก์ชั่นได้ถูกที่แล้ว ได้ทำการตรวจสอบข้างต้นแล้ว ผ่านแล้ว ยังทำงานไม่ได้อีก ก็ต้องดูตามขั้นต่อไปครับ
คุณนำไปใช้ใน "รายงานป้ายผนึก" คำนี้ละเอียดไม่พอครับ ไม่รู้ว่าใช้ตรงไหนยังไง
- เขียนเป็นนิพจน์ในคิวรี่ ของแหล่งข้อมูลรายงาน
- หรือ เขียนเป็นนิพนจ์ใน textbox ในรายงาน
37 @R07063
ผมส่งตัวอย่างให้อาจารย์แล้วครับ

โหลดไฟล์ได้ที่
www.gmail. com
user : accboard
pwd : accgmail
subject : bahttext
38 @R09088
มีวิธีแก้นะค่ะ อย่าก๊อปโค้ดแล้วเอาไปวางเฉยๆ ถึงจะ คอมไพล์ เรียกใช้ฟังก์ชั่นถูกก็เทอะ มันยัง ขึ้น #Name? ในฟอร์ม หรือ #error ใน Report ก็ตาม แก้ตามวิธีที่บอก ก็ทำหมดทุกอย่างก็ยังเป็นเหมือนเดิม **วิธีแก้สำหรับอิฉันคือ print code ที่ก็อปเค้ามาอะ แล้วไปพิมพ์ใหม่ใน โมดูล เอง เลือก กรุ๊ป ฟังก์ชั่นที่มันเด้งขึเนมาให้เลือกและ ตรงตามรูปแบบ ที่ไปก๊อปเค้ามาอะ แล้วมันก็ใช้ได้ อย่าลืมไปตั้งค่ามาโคร เลือกเปิดใช้มาโคร
39 @R17745
สุดยอดครับ ขอบคุณ คุณสำนึกดี อาจารย์ yeadram และอาจารย์ทุกท่านครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2504s