2011-12-02 6 views
1

rdlc 파일에서 나는 단지 decimal number in words으로 변환하고 싶습니다.금액을 RDLC의 단어로 변환

같이 '125.2' as 'One hundred and twenty five point two five'. Google에서 검색하고 일부 코드를 사용했지만 소수점을 변환 할 수 없습니다. 어떤 몸이라도 알고 있으면 공유하십시오.

답변

5

이 RDLC 코드 ALL 기타 사항 서보 -OFF에 다음 코드를 작성하고 RDLC 보고서를 엽니 다 -> 오른쪽 클릭 ->는 코드 태그를 선택하거나 메뉴 보고서를 찾아 선택보다는 "보고서 속성" "코드"탭 을 선택하고

다음 쓰기
Function RupeesToWord(ByVal MyNumber) 
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 " 
On Error Resume Next 
' Convert MyNumber to a string, trimming extra spaces. 
MyNumber = Trim(Str(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" 
Paisa = "" 

' Strip off paisa from remainder to convert. 
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) 
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) 
RupeesToWord = "Rupees " & Words & Paisa & " Only" 

Exit Function 

Else 
If Len(TM) = 2 Then 
Words = ConvertTens(TM) 
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) 
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 

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

Else 

Words = ConvertDigit(Temp) & place(iCount) & 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) & place(iCount) 


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

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

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

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

End If 
End If 

iCount = iCount + 2 
Loop 

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

' Conversion for hundreds 
'***************************************** 
Private Function ConvertHundreds(ByVal MyNumber) 
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 

' Conversion for tens 
'***************************************** 
Private Function ConvertTens(ByVal MyTens) 
Dim Result As String 

' Is value between 10 and 19? 
If Val(Left(MyTens, 1)) = 1 Then 
Select Case Val(MyTens) 
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 
' .. otherwise it's between 20 and 99. 
Select Case Val(Left(MyTens, 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 

' Convert ones place digit. 
Result = Result & ConvertDigit(Right(MyTens, 1)) 
End If 

ConvertTens = Result 
End Function 

Private Function ConvertDigit(ByVal MyDigit) 
Select Case Val(MyDigit) 
Case 1 : ConvertDigit = "One" 
Case 2 : ConvertDigit = "Two" 
Case 3 : ConvertDigit = "Three" 
Case 4 : ConvertDigit = "Four" 
Case 5 : ConvertDigit = "Five" 
Case 6 : ConvertDigit = "Six" 
Case 7 : ConvertDigit = "Seven" 
Case 8 : ConvertDigit = "Eight" 
Case 9 : ConvertDigit = "Nine" 
Case Else : ConvertDigit = "" 
End Select 
End Function 

당신이 바닥 글에 필요한 경우 그

=Code.RupeesToWord(Fields!deci_NetAmt.Value) 

처럼 추가, 총 가격 필드의 발현을 선택 페이지 추가의 글

=Code.RupeesToWord(Sum(ReportItems!deci_NetAmt.Value)) 
+0

RupeesToWord 오류를주고있다 불어 코드를 제거하고 교체해야 위의 코드에서

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

. – Sribin

+0

'Paisa = "및"ConvertTens (Temp) & "Paisa"행 시작 부분에서 제거됨 - 이제는 잘 작동합니다 – Sribin

1

위의 코드에서 실수는있다. 당신이 좋아하는 Paisa 전에 '제거해야 위의 코드에서

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

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

지금 이것은 당신이 제대로 작동하는 데 도움이됩니다.

0

위의 코드에서 실수가 있습니다. 당신이 표현에 도착하는 동안

Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2) 
if Temp >0 then 
Paisa = " and " & ConvertTens(Temp) & " Paisa" 
end if 
관련 문제