Member 14015602 Ответов: 1

Преобразования сумма прописью в рупиях, долларах США и евро формат в SSRS отчет


Привет,

Мне нужно поместить один код для изменения суммы в слова, основанные на валютном формате.
пожалуйста, предложите вместе с кодом.

С уважением,
Шамбхави

Что я уже пробовал:

 <pre>Public Shared Function changeToWords(ByVal numb As [String]) As [String]
    Dim val As [String] = "", wholeNo As [String] = numb, points As [String] = "", andStr As [String] = "", pointStr As [String] = ""
    Dim endStr As [String] = ""
    Try
        Dim decimalPlace As Integer = numb.IndexOf(".")
        If decimalPlace > 0 Then
            wholeNo = numb.Substring(0, decimalPlace)
            points = numb.Substring(decimalPlace + 1)
            If Convert.ToInt32(points) > 0 Then
                andStr = "point"
                ' just to separate whole numbers from points
                pointStr = translateCents(points)
            End If
        End If
        val = [String].Format("{0} {1}{2} {3}", translateWholeNumber(wholeNo).Trim(), andStr, pointStr, endStr)
    Catch
    End Try
    Return val
End Function

Private Shared Function translateWholeNumber(ByVal number As [String]) As [String]
    Dim word As String = ""
    Try
        Dim beginsZero As Boolean = False
        'tests for 0XX
        Dim isDone As Boolean = False
        'test if already translated
        Dim dblAmt As Double = (Convert.ToDouble(number))
        'if ((dblAmt > 0) && number.StartsWith("0"))
        If dblAmt > 0 Then
            'test for zero or digit zero in a nuemric
            beginsZero = number.StartsWith("0")

            Dim numDigits As Integer = number.Length
            Dim pos As Integer = 0
            'store digit grouping
            Dim place As [String] = ""
            'digit grouping name:hundres,thousand,etc...
            Select Case numDigits
                Case 1
                    'ones' range
                    word = ones(number)
                    isDone = True
                    Exit Select
                Case 2
                    'tens' range
                    word = tens(number)
                    isDone = True
                    Exit Select
                Case 3
                    'hundreds' range
                    pos = (numDigits Mod 3) + 1
                    place = " Hundred "
                    Exit Select
                'thousands' range
                Case 4,5
                    pos = (numDigits Mod 4) + 1
                    place = " Thousand "
                    Exit Select
                'millions' range
                Case 6, 7,8,9
                    pos = (numDigits Mod 6) + 1
                    place = " Lakhs "
                    Exit Select
                Case 8,9
                    pos = (numDigits Mod 6) + 1
                    place = " Crore "
                    Exit Select
                Case Else
                    'add extra case options for anything above Billion...
                    isDone = True
                    Exit Select
            End Select
            If Not isDone Then
                'if transalation is not done, continue...(Recursion comes in now!!)
                word = translateWholeNumber(number.Substring(0, pos)) + place + translateWholeNumber(number.Substring(pos))
                'check for trailing zeros
                If beginsZero Then
                    word = " and " & word.Trim()
                End If
            End If
            'ignore digit grouping names
            If word.Trim().Equals(place.Trim()) Then
                word = ""
            End If
        End If
    Catch


    End Try
    Return word.Trim()
End Function
Private Shared Function tens(ByVal digit As [String]) As [String]
    Dim digt As Integer = Convert.ToInt32(digit)
    Dim name As [String] = Nothing
    Select Case digt
        Case 10
            name = "Ten"
            Exit Select
        Case 11
            name = "Eleven"
            Exit Select
        Case 12
            name = "Twelve"
            Exit Select
        Case 13
            name = "Thirteen"
            Exit Select
        Case 14
            name = "Fourteen"
            Exit Select
        Case 15
            name = "Fifteen"
            Exit Select
        Case 16
            name = "Sixteen"
            Exit Select
        Case 17
            name = "Seventeen"
            Exit Select
        Case 18
            name = "Eighteen"
            Exit Select
        Case 19
            name = "Nineteen"
            Exit Select
        Case 20
            name = "Twenty"
            Exit Select
        Case 30
            name = "Thirty"
            Exit Select
        Case 40
            name = "Fourty"
            Exit Select
        Case 50
            name = "Fifty"
            Exit Select
        Case 60
            name = "Sixty"
            Exit Select
        Case 70
            name = "Seventy"
            Exit Select
        Case 80
            name = "Eighty"
            Exit Select
        Case 90
            name = "Ninety"
            Exit Select
        Case Else
            If digt > 0 Then
                name = (tens(digit.Substring(0, 1) & "0") & " ") + ones(digit.Substring(1))
            End If
            Exit Select
    End Select
    Return name
End Function
Private Shared Function ones(ByVal digit As [String]) As [String]
    Dim digt As Integer = Convert.ToInt32(digit)
    Dim name As [String] = ""
    Select Case digt
        Case 1
            name = "One"
            Exit Select
        Case 2
            name = "Two"
            Exit Select
        Case 3
            name = "Three"
            Exit Select
        Case 4
            name = "Four"
            Exit Select
        Case 5
            name = "Five"
            Exit Select
        Case 6
            name = "Six"
            Exit Select
        Case 7
            name = "Seven"
            Exit Select
        Case 8
            name = "Eight"
            Exit Select
        Case 9
            name = "Nine"
            Exit Select
    End Select
    Return name
End Function
Private Shared Function translateCents(ByVal cents As [String]) As [String]
    Dim cts As [String] = "", digit As [String] = "", engOne As [String] = ""
    For i As Integer = 0 To cents.Length - 1
        digit = cents(i).ToString()
        If digit.Equals("0") Then
            engOne = "Zero"
        Else
            engOne = ones(digit)
        End If
        cts += " " & engOne
    Next
    Return cts
End Function

1 Ответов

Рейтинг:
2

OriginalGriff

Цитата:
пожалуйста, предложите вместе с кодом.

Это не совсем так работает.
Мы не делаем вашу работу за вас.
Если вы хотите, чтобы кто - то написал ваш код, вы должны заплатить- я предлагаю вам пойти в Freelancer.com и спросите там.

Но знайте: вы получаете то, за что платите. Плати копейки, получай обезьян.

Идея "развития" заключается в следующем: "систематическое использование научно - технических знаний для достижения конкретных целей или требований." BusinessDictionary.com[^]
Это не то же самое, что "быстро гуглите и сдавайтесь, если я не могу найти точно правильный код".
Так что либо заплатите кому-нибудь за это, либо научитесь писать сами. Мы здесь не для того, чтобы делать это за вас.