How to Convert Rupee Value to Words in Crystal Reports

The given code can explain to convert the number to word in crystal report

1) right click on your formula field
2) click edit formula
3) formula workshop window will open
4) left side of the window u have 'report custom functions'
5)right click and select new
6)give the name for function


Function ConvertDigit(MyDigit as string)
if Val(MyDigit) = 1 then
ConvertDigit = "One"
elseif Val(MyDigit) = 2 then
ConvertDigit = "Two "
elseif Val(MyDigit) = 3 then
ConvertDigit = "Three "
elseif Val(MyDigit) = 4 then
ConvertDigit = "Four "
elseif Val(MyDigit) = 5 then
ConvertDigit = "Five "
elseif Val(MyDigit) = 6 then
ConvertDigit = "Six "
elseif Val(MyDigit) = 7 then
ConvertDigit = "Seven "
elseif Val(MyDigit) = 8 then
ConvertDigit = "Eight "
elseif Val(MyDigit) = 9 then
ConvertDigit = "Nine "
end if
End Function

7) and the right top you have a drop down. it shows 'Crystal Syntax' as default
8)change this to basic syntax.
9) save the function.


do the above steps for the following functions also


Function ConvertHundreds(MyNumber as string)
Dim Result As String

' Exit if there is nothing to convert.
If Val(MyNumber) = 0 Then Exit Function

' Append leading zeros to number.
MyNumber = Right("000" & MyNumber, 3)

' Do we have a hundreds place digit to convert?
If Left(MyNumber, 1) <> "0" Then
Result = ConvertDigit(Left(MyNumber, 1)) & " Hundreds "
End If

' Do we have a tens place digit to convert?
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & ConvertTens(Mid(MyNumber, 2))
Else
' If not, then convert the ones place digit.
Result = Result & ConvertDigit(Mid(MyNumber, 3))
End If

ConvertHundreds = Trim(Result)
End Function



Function ConvertTens(MyTens as string)
Dim Result As String

' Is value between 10 and 19?
If Val(Left(MyTens, 1)) = 1 Then
if Val(MyTens) = 10 then
Result = "Ten"
elseif Val(MyTens) = 11 then
Result = "Eleven"
elseif Val(MyTens) = 12 then
Result = "Twelve"
elseif Val(MyTens) = 13 then
Result = "Thirteen"
elseif Val(MyTens) = 14 then
Result = "Fourteen"
elseif Val(MyTens) = 15 then
Result = "Fifteen"
elseif Val(MyTens) = 16 then
Result = "Sixteen"
elseif Val(MyTens) = 17 then
Result = "Seventeen"
elseif Val(MyTens) = 18 then
Result = "Eighteen"
elseif Val(MyTens) = 19 then
Result = "Nineteen"
end if
Else
if Val(Left(MyTens, 1)) = 2 then
Result = "Twenty "
elseif Val(Left(MyTens, 1)) = 3 then
Result = "Thirty "

elseif Val(Left(MyTens, 1)) = 4 then
Result = "Forty "

elseif Val(Left(MyTens, 1)) = 5 then
Result = "Fifty "

elseif Val(Left(MyTens, 1)) = 6 then
Result = "Sixty "

elseif Val(Left(MyTens, 1)) = 7 then
Result = "Seventy "
elseif Val(Left(MyTens, 1)) = 8 then
Result = "Eighty "
elseif Val(Left(MyTens, 1)) = 9 then
Result = "Ninety "

end if
Result = Result & ConvertDigit(Right(cstr(MyTens), 1))
end if

' Convert ones place digit.


ConvertTens = Result
End Function





Function RupeesToWord(MyNumber As string)
Dim Temp
Dim Rupees, Paisa As String
Dim DecimalPlace, iCount
Dim Hundreds, Words As String

' Dim place(9) As String
'place[0] = " Thousand "
' place(2) = " Lakh "
' place(4) = " Crore "
' place(6) = " Arab "
' place(8) = " Kharab "

' Dim place(9) As String
' place(0) = " Thousand "
' place(2) = " Lakh "
' place(4) = " Crore "
' place(6) = " Arab "
' place(8) = " Kharab "
' 'On Error Resume Next
' Convert MyNumber to a string, trimming extra spaces.



MyNumber = Trim(CStr(MyNumber))

' Find decimal place.
DecimalPlace = InStr(MyNumber, ".")

' If we find decimal place...
If DecimalPlace > 0 Then
' Convert Paisa

Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)
Paisa = " and " & ConvertTens(Temp) & " Paisa"

' Strip off paisa from remainder to convert.
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

if Paisa= " and Paisa" then
Paisa=""
end if

End If




'===============================================================
Dim TM As String ' If MyNumber between Rs.1 To 99 Only.
TM = Right(MyNumber, 2)

If Len(MyNumber) > 0 And Len(MyNumber) <= 2 Then
If Len(TM) = 1 Then
Words = ConvertDigit(TM)

if Paisa= " and Paisa" then
Paisa=""
end if
RupeesToWord = "Rupees " & Words & Paisa & " Only"




Exit Function

Else
If Len(TM) = 2 Then
Words = ConvertTens(TM)
if Paisa= " and Paisa" then
Paisa=""
end if
RupeesToWord = "Rupees " & Words & Paisa & " Only"
Exit Function

End If
End If
End If
'===============================================================

'
' Convert last 3 digits of MyNumber to ruppees in word.
Hundreds = ConvertHundreds(Right(MyNumber, 3))
' Strip off last three digits
MyNumber = Left(MyNumber, Len(MyNumber) - 3)

iCount = 0
Do While MyNumber <> ""
'Strip last two digits
Temp = Right(MyNumber, 2)


dim str1 as string

if iCount = 0 then
str1 =" Thousand "
elseif iCount = 2 then
str1 =" Lakh "
elseif iCount =4 then
str1 =" Crore "
elseif iCount =6 then
str1 =" Arab "
elseif iCount =8 then
str1 =" Kharab "
end if


If Len(MyNumber) = 1 Then


If Trim(Words) = "Thousand" Or _
Trim(Words) = "Lakh Thousand" Or _
Trim(Words) = "Lakh" Or _
Trim(Words) = "Crore" Or _
Trim(Words) = "Crore Lakh Thousand" Or _
Trim(Words) = "Arab Crore Lakh Thousand" Or _
Trim(Words) = "Arab" Or _
Trim(Words) = "Kharab Arab Crore Lakh Thousand" Or _
Trim(Words) = "Kharab" Then


' place(0) = " Thousand "
' place(2) = " Lakh "
' place(4) = " Crore "
' place(6) = " Arab "
' place(8) = " Kharab "



Words = ConvertDigit(Temp) & str1
MyNumber = Left(MyNumber, Len(MyNumber) - 1)

Else

Words = ConvertDigit(Temp) & str1 & Words
MyNumber = Left(MyNumber, Len(MyNumber) - 1)

End If
Else

If Trim(Words) = "Thousand" Or _
Trim(Words) = "Lakh Thousand" Or _
Trim(Words) = "Lakh" Or _
Trim(Words) = "Crore" Or _
Trim(Words) = "Crore Lakh Thousand" Or _
Trim(Words) = "Arab Crore Lakh Thousand" Or _
Trim(Words) = "Arab" Then


Words = ConvertTens(Temp) & str1


MyNumber = Left(MyNumber, Len(MyNumber) - 2)
Else

'=================================================================
' if only Lakh, Crore, Arab, Kharab

If Trim(ConvertTens(Temp) & str1) = "Lakh" Or _
Trim(ConvertTens(Temp) & str1) = "Crore" Or _
Trim(ConvertTens(Temp) & str1) = "Arab" Then

Words = Words
MyNumber = Left(MyNumber, Len(MyNumber) - 2)
Else
Words = ConvertTens(Temp) & str1 & Words
MyNumber = Left(MyNumber, Len(MyNumber) - 2)
End If

End If
End If

iCount = iCount + 2
Loop

if Paisa= " and Paisa" then
Paisa=""
end if

RupeesToWord = "Rupees " & Words & Hundreds & Paisa & " Only"

end Function





pass ur number to RupeesToword function


Comments

Guest Author: Rajesh Kumar04 Oct 2012

It's Working but some time it not Working properly.
Like
9892210
it print only
Ninety Eight lakh Ninety Two thousand tow hundreds only



  • Do not include your name, "with regards" etc in the comment. Write detailed comment, relevant to the topic.
  • No HTML formatting and links to other web sites are allowed.
  • This is a strictly moderated site. Absolutely no spam allowed.
  • Name:
    Email: