金额小写转大写 水晶报表2008 自定义函数又如何写?
'金额小写转大写'金额小写转大写
Public Function NtoC(ByVal sNum As String, Optional ByVal Yuan As String = "元", Optional ByVal Jiao As String = "角", Optional ByVal Fen As String = "分") As String
If Val(Trim(sNum)) > 0 Then
Dim sIntD, sDecD As String
Dim i, iCount, j, iLength As Integer
Dim lStartPos As Long
Dim sBIT(4), sUNIT(3), sCents(2) As String
sBIT(0) = "" '个
sBIT(1) = "拾"
sBIT(2) = "佰"
sBIT(3) = "仟"
sUNIT(0) = ""
sUNIT(1) = "万"
sUNIT(2) = "亿"
sUNIT(3) = Yuan
sCents(0) = Fen
sCents(1) = Jiao
Dim temp As String
If InStr(Trim(sNum), ".") > 0 Then
temp = Left(Trim(sNum), InStr(Trim(sNum), ".") - 1)
Else
temp = Trim(sNum)
End If
iCount = IIf(Len(temp) Mod 4, Len(Trim(temp)) \ 4 + 1, Len(Trim(temp)) \ 4)
lStartPos = 1
For i = iCount To 1 Step -1
If i = iCount And Len(Trim(temp)) Mod 4 <> 0 Then
iLength = Len(Trim(temp)) Mod 4
Else
iLength = 4
End If
sIntD = Mid(Trim(temp), lStartPos, iLength)
For j = 1 To Len(Trim(sIntD))
If Val(Mid(sIntD, j, 1)) <> 0 Then
NtoC = NtoC & Choose(Val(Mid(sIntD, j, 1)), "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖") & sBIT(Len(Trim(sIntD)) - j)
Else
If Val(Mid(sIntD, j + 1, 1)) <> 0 Then
NtoC = NtoC & "零"
End If
End If
Next j
lStartPos = lStartPos + iLength
If i < iCount Then
If (Val(Mid(sIntD, Len(Trim(sIntD)), 1)) <> 0 Or Val(Mid(sIntD, Len(Trim(sIntD)) - 1, 1)) <> 0 Or Val(Mid(sIntD, Len(Trim(sIntD)) - 2, 1)) Or Val(Mid(sIntD, Len(Trim(sIntD)) - 3, 1)) <> 0) Then
NtoC = NtoC & sUNIT(i - 1)
End If
Else
NtoC = NtoC & sUNIT(i - 1)
End If
Next
If Len(Trim(NtoC)) > 0 Then
NtoC = NtoC & Yuan
End If
'小数
If InStr(1, Trim(sNum), ".") <> 0 Then
sDecD = Right(sNum, Len(Trim(sNum)) - InStr(1, Trim(sNum), "."))
For i = 1 To Len(Trim(sDecD))
If Val(Mid(Trim(sDecD), i, 1)) <> 0 Then
NtoC = NtoC & Choose(Val(Mid(Trim(sDecD), i, 1)), "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
NtoC = NtoC & sCents(2 - i)
If i >= 2 Then
Exit For
End If
Else
If Len(Trim(NtoC)) > 0 Then
NtoC = NtoC & "零" & sCents(2 - i)
End If
End If
Next i
' Else
' NtoC = NtoC & sCents(i)
End If
Else
NtoC = "零" & Yuan
End If
NtoC = NtoC & "整"
End Function 水晶报表 2008 --------------------编程问答-------------------- 能过VB里的函数转换,在打开报表前,通这参数反转后的字符串传一报表中.
补充:.NET技术 , VB.NET