水晶报表人民币大写转换函数

来源:互联网 发布:linux怎么安装声卡 编辑:程序博客网 时间:2024/04/30 11:29

 当您需要做一个诸如出入库单的报表时,经常会用到人民币总金额的汇总,并希望打印出来的时候有人民币的大写,所以您需要插入一个sum函数来进行合计,那么合计出来的阿拉伯数字的人民币如何转换成中文大写呢?

以下代码将帮你完成人民币大写的转换,您必须添加一个字符串类型的未邦定字段到您的水晶报表,然后将上面您已经sum好的阿拉伯数字作为一个参数传递到下面代码中的函数。即得到了人民币的大写。

Function ConvertRMB (ls as currencyas string
    
dim dx_sz as string
    
dim dx_dw as string 
    
dim str_int as string 
    
dim str_dec as string
    
dim dx_str as string 
    
dim fu as string
    
dim a as string
    
dim b as string
    
dim c as string
    
dim d as string
    
dim b2 as string
    
dim num_int as number
    
dim num_dec as currency
    
dim len_int as number
    
dim i as number
    
dim a_int as number
    
dim pp as number

    dx_sz
="零壹贰叁肆伍陆柒捌玖"
    dx_dw
="万仟佰拾亿仟佰拾万仟佰拾元"
    
    
if ls<0 then
        ls
=abs(ls)
        fu
=""
    
else
        fu
=""
    
end if

    dx_str
=CStr (ls)
    dx_str
=Replace (dx_str,"","")
    dx_str
=replace(dx_str,",","")
    
if (ls>0and (ls<1then dx_str="0"+dx_str
    
    pp
=InStr (dx_str,".")   
    
if pp>0 then 
        str_int
=mid(dx_str,1,instr(dx_str,".")-1)
    
else
        str_int
=dx_str
    
end if

    num_int
=ToNumber (str_int)

    
if (ls>0and (ls<1then 
        num_dec 
=  ls*100
    
else
        num_dec
=(ls-num_int)*100
    
end if

    str_dec
=totext(num_dec)
    str_dec
=replace(str_dec,"","")

    len_int
=len(str_int)
    dx_str
=""
    
for i=1 to len_int
        a
=mid(str_int,i,1)
        a_int
=tonumber(a)
        b
=mid(dx_sz,(a_int+1),1)
        c
=mid(dx_dw,(13-len_int+i),1)
        
if dx_str<>"" then
            d
=mid(dx_str,len(dx_str)-1,1)
        
else
            d
=""
        
end if
        
if(b=""and ((d=""or (b=b2) or (c=""or (c=""or (c="亿")) then b=""
        
if(a="0"and (c<>""and (c<>""and (c<>"亿"then c=""
        
if((c=""or (c=""or (c="亿")) and (d=""and (a="0"then
            dx_str
=mid(dx_str,1,len(dx_str)-2)
            d
=mid(dx_str,len(dx_str)-1,2)
            
if((c=""and (d=""))or((c=""and (d="亿")) then c=""
        
end if
        dx_str
=dx_str+b+c
        b2
=b
    
next i

    
'处理金额小于1的情况
    if len(dx_str)<2 then dx_str=""
    
if(num_dec<10)and(ls>0then
        a_int
=tonumber(str_dec)
        b
=mid(dx_sz,(a_int+1),1)
        
if num_dec=0 then dx_str=dx_str+""
        
if num_dec>0 then dx_str=dx_str+""+b+""
    
end if
    
if num_dec>=10 then
        a_int
=tonumber(mid(str_dec,1,1))
        a
=mid(dx_sz,(a_int+1),1)
        a_int
=tonumber(mid(str_dec,2,1))
        b
=mid(dx_sz,(a_int+1),1)
        
if a<>"" then a=a+""
        
if b<>"" then b=b+"" else b=""
        dx_str
=dx_str+a+b
    
end if
    
if ls=0 then dx_str="零元整"
    dx_str
=fu+dx_str

    dx_str
=replace(dx_str,"零亿","亿")
    dx_str
=replace(dx_str,"零万","")
    dx_str
=replace(dx_str,"零千","")
    dx_str
=replace(dx_str,"零元","")


    ConvertRMB 
=dx_str
End Function

 

HUST:Eric

原创粉丝点击