Office中国论坛/Access中国论坛

标题: 如何将一个access数字字段转换为大写金额 [打印本页]

作者: 朱同学    时间: 2009-4-10 21:07
标题: 如何将一个access数字字段转换为大写金额
如何将一个access数字字段转换为大写金额
作者: todaynew    时间: 2009-4-10 21:11
本帖最后由 todaynew 于 2009-4-10 21:14 编辑

一会给你一个函数便解决了。

把楼下的函数拷贝到公共模块中,然后在需要的地方引用之即可。
作者: todaynew    时间: 2009-4-10 21:12
Function RMB(x As Double) As String
Dim i1 As Long, i2 As Long, j As Long, m As Long, strm(15) As String
Dim strB1 As String, strB2 As String
RMB = str(Round(x, 4))
j = InStr(1, RMB, ".", 1)
If j = 0 Then
    strB1 = Trim(RMB)
    strB2 = ""
Else
    strB1 = Trim(Mid(RMB, 1, j - 1))
    strB2 = Trim(Mid(RMB, j + 1, 4))
End If
strB1 = Replace(Replace(Replace(Replace(Replace(strB1, "0", "零"), "1", "壹"), "2", "貳"), "3", "叁"), "4", "肆")
strB1 = Replace(Replace(Replace(Replace(Replace(strB1, "5", "伍"), "6", "陆"), "7", "柒"), "8", "捌"), "9", "玖")
strB2 = Replace(Replace(Replace(Replace(Replace(strB2, "0", "零"), "1", "壹"), "2", "貳"), "3", "叁"), "4", "肆")
strB2 = Replace(Replace(Replace(Replace(Replace(strB2, "5", "伍"), "6", "陆"), "7", "柒"), "8", "捌"), "9", "玖")
i1 = Len(strB1): i2 = Len(strB2)
For j = 1 To i1
    strm(j) = Mid(strB1, i1 - j + 1, 1)
Next
strB1 = ""
For j = 1 To i1
    Select Case j
            Case 1
                If strm(j) = "零" Then
                    strB1 = strB1
                Else
                    strB1 = strm(j) & strB1
                End If
            Case 2
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "拾" & strB1
                End If
            Case 3
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "佰" & strB1
                End If
            Case 4
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "仟" & strB1
                End If
            Case 5
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        If strm(j) = "零" And strm(j + 1) = "零" And strm(j + 2) = "零" And strm(j + 3) = "零" Then
                            strB1 = strB1
                        Else
                            strB1 = "万" & strB1
                        End If
                    Else
                        strB1 = strm(j) & "万" & strB1
                    End If
                Else
                    strB1 = strm(j) & "万" & strB1
                End If
            Case 6
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "拾" & strB1
                End If
            Case 7
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "佰" & strB1
                End If
            Case 8
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "仟" & strB1
                End If
            Case 9
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        If strm(j) = "零" And strm(j + 1) = "零" And strm(j + 2) = "零" And strm(j + 3) = "零" Then
                            strB1 = strB1
                        Else
                            strB1 = "亿" & strB1
                        End If
                    Else
                        strB1 = strm(j) & "亿" & strB1
                    End If
                Else
                    strB1 = strm(j) & "亿" & strB1
                End If
            Case 10
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "拾" & strB1
                End If
            Case 11
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "佰" & strB1
                End If
            Case 12
                If strm(j) = "零" Then
                    If strm(j - 1) = "零" Then
                        strB1 = strB1
                    Else
                        strB1 = strm(j) & strB1
                    End If
                Else
                    strB1 = strm(j) & "仟" & strB1
                End If
    End Select
Next
Select Case i2
        Case 0
           strB2 = "整"
        Case 1
            strB2 = Mid(strB2, 1, 1) & "角" & "零分"
        Case 2
            strB2 = Mid(strB2, 1, 1) & "角" & Mid(strB2, 2, 1) & "分"
        Case 3
            strB2 = Mid(strB2, 1, 1) & "角" & Mid(strB2, 2, 1) & "分" & Mid(strB2, 3, 1) & "厘"
        Case 4
            strB2 = Mid(strB2, 1, 1) & "角" & Mid(strB2, 2, 1) & "分" & Mid(strB2, 3, 1) & "厘" & Mid(strB2, 4, 1) & "毫"
End Select
strB1 = strB1 & IIf(i1 = 0, "", "元")
If RMB = "0" Then
    RMB = ""
Else
    RMB = strB1 & strB2
End If
End Function
作者: 朱同学    时间: 2009-4-10 21:18
给我的代码怎么用?
作者: todaynew    时间: 2009-4-10 21:21
本帖最后由 todaynew 于 2009-4-10 21:32 编辑

拷贝到公共模块中,便可以在任何地方使用了。比如在查询中。

[attach]37235[/attach]

[attach]37236[/attach]
作者: chaojianan    时间: 2009-4-10 22:08
谢谢分享。收藏了。
作者: shitou1ge    时间: 2009-4-10 22:12

作者: 朱同学    时间: 2009-4-15 22:58
谢谢大家帮助
作者: ty_1029    时间: 2009-4-16 09:25
厉害啊,自定义函数就是强大~~~~~~
作者: ppp1001    时间: 2010-4-15 11:36
非常感谢todaynew ,实用啊!!!!!!!!!!!1
作者: goto2008    时间: 2010-4-15 11:51
谢谢分享
作者: hsc07    时间: 2010-4-15 14:31
谢谢分享。收藏了。
作者: yihesmxx    时间: 2010-8-17 17:02
谢谢分享。收藏了。
作者: lovehere    时间: 2010-8-18 09:45
收藏并学习了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3