Wednesday 6 July 2011

Indian Currency Format for SSRS Report

Following Steps are to Format the Numbers in Indian Format :- 

Step :1 =Right(Cstr(format(Sum(Fields!salary.Value),
"##\,##\,##\,##\,##\,##\,##0.00")), Len(CStr(Format(Sum(Fields!salary.Value),"N2"))))

OR

1. delete your existing format expression
2. click on your report in design mode
3. press F4 to bring up report properties
4. Under language change to hi-IN
5. right-click on your textbox
6. click text-box properties
7. click number 
8. under category select number
9. check the box labeled 'use regional formatting'
10. preview report




Following Steps are to Format the Indian Numbers in Words :-


Step 1: Right click on the report and select the report properties.


Step 2: Select the code and paste the following code. 
Step 3: Right click the textbox select expression then paste this code
             =Code.MyFunction(ReportItems)


The following is the code :-





Function SpellNumber(ByVal MyNumber)
   Dim Rupees, Paise, Temp
   Dim DPlace, Count As Integer
   Dim Places(9) As String
   Places(2) = " Thousand "
   Places(3) = " Lakh "
   Places(4) = " Crore "
   ' String representation of amount.
   MyNumber = Trim(Str(MyNumber))
   ' Position of decimal place 0 if none.
DPlace = InStr(MyNumber, ".")
   ' Convert Paise and set MyNumber to dollar amount.
   If DPlace > 0 Then
       Paise = GetTens(Left(Mid(MyNumber, DPlace + 1) & "00", 2))
       MyNumber = Trim(Left(MyNumber, DPlace - 1))
   End If
   Count = 1
   Do While MyNumber <> ""
       If Count <> 1 Then
          Temp = GetHundreds(Right(MyNumber, 2))
          If Temp <> "" Then Rupees = Temp & Places(Count) & Rupees
          If Len(MyNumber) > 2 Then
          MyNumber = Left(MyNumber, Len(MyNumber) - 2)
          Else
          MyNumber = ""
          End If
       Else
          Temp = GetHundreds(Right(MyNumber, 3))
          If Temp <> "" Then Rupees = Temp & Places(Count) & Rupees
          If Len(MyNumber) > 3 Then
              MyNumber = Left(MyNumber, Len(MyNumber) - 3)
           Else
              MyNumber = ""
           End If
       End If
       Count = Count + 1
   Loop
   Select Case Rupees
       Case ""
           Rupees = " "
       Case "One"
           Rupees = "One Rupees "
        Case Else
           Rupees = Rupees &  " Rupees "
   End Select
   Select Case Paise
       Case ""
           Paise = " Zero Paise "
       Case "One"
           Paise = " and Paise One"
       Case Else
           Paise =   Paise  & " Paise "
   End Select

   If Rupees <> " " Then Paise = " and " & Paise
   SpellNumber = " [ " & Rupees & Paise & " Only ] "
End Function
 
' For us Doller in words  
Function SpellNumberInDollars(ByVal MyNumber)

Dim Dollars, Cents, Temp
Dim DecimalPlace, Count
Dim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
' String representation of amount.                        
MyNumber = Trim(Str(MyNumber))                          
' Position of decimal place 0 if none.
DecimalPlace = InStr(MyNumber, ".")
' Convert cents and set MyNumber to dollar amount.

If DecimalPlace > 0 Then
   Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))                   
End If

Do While MyNumber <> ""
   Temp = GetHundreds(Right(MyNumber, 3))
   If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
   If Len(MyNumber) > 3 Then
   MyNumber = Left(MyNumber, Len(MyNumber) - 3)  
 Else

       MyNumber = ""
   End If

   Count = Count + 1 
 
Loop Select Case Dollars Case "" Dollars = "No Dollars" Case "One" Dollars = "One Dollar" Case Else Dollars = Dollars & " Dollars" End Select Select Case Cents Case "" Cents = " and No Cents" Case "One" Cents = " and One Cent" Case Else Cents = " and " & Cents & " Cents" End Select SpellNumberInDollars = Dollars & Cents End Function




' Converts a number from 100-999 into text
Function GetHundreds(ByVal MyNumber)
   Dim Result As String
   If Val(MyNumber) = 0 Then Exit Function
   MyNumber = Right("000" & MyNumber, 3)
   ' Convert the hundreds place.
   If Mid(MyNumber, 1, 1) <> "0" Then
       Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
   End If
   ' Convert the tens and ones place.
   If Mid(MyNumber, 2, 1) <> "0" Then
       Result = Result & GetTens(Mid(MyNumber, 2))
   Else
       Result = Result & GetDigit(Mid(MyNumber, 3))
   End If
   GetHundreds = Result
End Function
' Converts a number from 10 to 99 into text.
Function GetTens(TensText)
   Dim Result As String
   Result = ""          
   If Val(Left(TensText, 1)) = 1 Then  
       Select Case Val(TensText)
           Case 10: Result = "Ten"
           Case 11: Result = "Eleven"
           Case 12: Result = "Twelve"
           Case 13: Result = "Thirteen"
           Case 14: Result = "Fourteen"
           Case 15: Result = "Fifteen"
           Case 16: Result = "Sixteen"
           Case 17: Result = "Seventeen"
           Case 18: Result = "Eighteen"
           Case 19: Result = "Nineteen"
           Case Else
        End Select
   Else  ' If value between 20-99...
        Select Case Val(Left(TensText, 1))
           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 "
           Case Else
        End Select
        Result = Result & GetDigit _
           (Right(TensText, 1))  ' Retrieve ones place.
   End If
    GetTens = Result
End Function
' Converts a number from 1 to 9 into text.
Function GetDigit(Digit)
    Select Case Val(Digit)
        Case 1: GetDigit = "One"
        Case 2: GetDigit = "Two"
        Case 3: GetDigit = "Three"
        Case 4: GetDigit = "Four"
        Case 5: GetDigit = "Five"
        Case 6: GetDigit = "Six"
        Case 7: GetDigit = "Seven"
        Case 8: GetDigit = "Eight"
        Case 9: GetDigit = "Nine"
        Case Else: GetDigit = ""
   End Select
End Function





End of Post ....


If you have any problem... let me know ....



8 comments:

  1. i have error in name'GetTens'is not declared

    ReplyDelete
  2. =Code.MyFunction(ReportItems)

    say clear myfunction here what function declare

    ReplyDelete
  3. Where is number and category which u have mentioned to click

    right-click on your textbox
    6. click text-box properties
    7. click number

    ReplyDelete
  4. Replies
    1. Hi Shivakumar ..
      i have solved that issue please check that
      and let me know if there are any issues

      Delete
  5. It’s appropriate time to make some plans for the future and it is time to be happy.300 euros to dollars I have read this post and if I could I wish to suggest you few interesting things or advice. Perhaps you could write next articles referring to this article. I desire to read even more things about it!

    ReplyDelete