How to Convert Numbers to Words

How to Convert Numbers to Word in report ?

For example

1 = one

1 = หนึ่ง (ThaiLanguage)

@Nitipat_Sakunwongsal, good day.

You’ll have to use scripts for this.

Here is an example with a Label object on PageHeader:

Sub OnBeforePrint

Number = 100
Report.Sections("PageHeader").Controls("Label1").Caption = Words_1_all(Number)

End Sub

' Return words for this value between 1 and 999.
Private Function Words_1_999(num)
Dim hundreds 
Dim remainder 
Dim result 

    hundreds = num \ 100
    remainder = num - hundreds * 100

    If hundreds > 0 Then
        result = Words_1_19(hundreds) & " hundred "
    End If

    If remainder > 0 Then
        result = result & Words_1_99(remainder)
    End If

    Words_1_999 = Trim(result)
End Function

' Return a word for this value between 1 and 19.
Private Function Words_1_19(num)
    Select Case num
        Case 1
            Words_1_19 = "one"
        Case 2
            Words_1_19 = "two"
        Case 3
            Words_1_19 = "three"
        Case 4
            Words_1_19 = "four"
        Case 5
            Words_1_19 = "five"
        Case 6
            Words_1_19 = "six"
        Case 7
            Words_1_19 = "seven"
        Case 8
            Words_1_19 = "eight"
        Case 9
            Words_1_19 = "nine"
        Case 10
            Words_1_19 = "ten"
        Case 11
            Words_1_19 = "eleven"
        Case 12
            Words_1_19 = "twelve"
        Case 13
            Words_1_19 = "thirteen"
        Case 14
            Words_1_19 = "fourteen"
        Case 15
            Words_1_19 = "fifteen"
        Case 16
            Words_1_19 = "sixteen"
        Case 17
            Words_1_19 = "seventeen"
        Case 18
            Words_1_19 = "eightteen"
        Case 19
            Words_1_19 = "nineteen"
    End Select
End Function

' Return a word for this value between 1 and 99.
Private Function Words_1_99(num)
Dim result
Dim tens

    tens = num \ 10

    If tens <= 1 Then
        ' 1 <= num <= 19
        result = result & " " & Words_1_19(num)
    Else
        ' 20 <= num
        ' Get the tens digit word.
        Select Case tens
            Case 2
                result = "twenty"
            Case 3
                result = "thirty"
            Case 4
                result = "forty"
            Case 5
                result = "fifty"
            Case 6
                result = "sixty"
            Case 7
                result = "seventy"
            Case 8
                result = "eighty"
            Case 9
                result = "ninety"
        End Select

        ' Add the ones digit number.
        result = result & " " & Words_1_19(num - tens * 10)
    End If

    Words_1_99 = Trim(result)
End Function

' Return a string of words to represent the
' integer part of this value.
Private Function Words_1_all(num)

Dim power_value(5)
Dim power_name(5)
Dim digits
Dim result
Dim i

    ' Initialize the power names and values.
    power_name(1) = "trillion": power_value(1) = 1000000000000
    power_name(2) = "billion":  power_value(2) = 1000000000
    power_name(3) = "million":  power_value(3) = 1000000
    power_name(4) = "thousand": power_value(4) = 1000
    power_name(5) = "":         power_value(5) = 1

    For i = 1 To 5
        ' See if we have digits in this range.
        If num >= power_value(i) Then
            ' Get the digits.
            digits = Int(num / power_value(i))

            ' Add the digits to the result.
            If Len(result) > 0 Then result = result & ", "
            result = result & _
                Words_1_999(digits) & _
                " " & power_name(i)

            ' Get the number without these digits.
            num = num - digits * power_value(i)
        End If
    Next

    Words_1_all = Trim(result)
End Function

Sub Empty()	
End Sub

Result:

This script has been adapted from this page.

Sds.

1 Like

Thank you very much :+1::+1::+1::+1: