【聚杰网数据库编程】在PB打印中实现人民币大写
函数名:自定义函数:no_to_char_sell()
函数内容:
string hz[15]string money[2]//hz[16]=零if not rmb thenhz[1]=一hz[2]=二hz[3]=三hz[4]=四hz[5]=五hz[6]=六hz[7]=七hz[8]=八hz[9]=九hz[10]=十hz[11]=百hz[12]=千hz[13]=万hz[14]=亿hz[15]=点elsehz[1]=壹hz[2]=贰hz[3]=叁hz[4]=肆hz[5]=伍hz[6]=陆hz[7]=柒hz[8]=捌hz[9]=玖hz[10]=拾hz[11]=佰hz[12]=仟hz[13]=万hz[14]=亿hz[15]=元 money[1]=角money[2]=分end ifstring val, num2val=numdo while left(val,1) = 0 val = right(val,len(val)-1)loopif pos(val,.) $#@60; $#@62; 0 thennum = left(val,pos(val,.) - 1)num2 =mid(val, pos(val,.) + 1)end ifstring str=,str_tmpint ifor i= 1 to len(num) str_tmp=mid(num,i,1)choose case str_tmp case 1 str=str+hz[1] case 2 str=str+hz[2] case 3 str=str+hz[3] case 4 str=str+hz[4] case 5 str=str+hz[5] case 6 str=str+hz[6] case 7 str=str+hz[7] case 8 str=str+hz[8] case 9 str=str+hz[9] case 0 str=str+end choose if str_tmp=0 then if right(str,2)=零 or str= or i=len(num) then str=str else str=str+零 end if else choose case len(num) -i +1 case 1 str=str case 2,6,10 str=str +hz[10] case 3,7,11 str=str +hz[11] case 4,8,12 str=str +hz[12] //千 case 5,13 str=str +hz[13] //万 case 9 str=str +亿 end chooseend ifif len(num) -i +1 = 9 and mid(num ,len(num) - 8,1) =0 then if right(str,2)=零 then str = left(str,len(str) - 2) str=str +亿end ifif len(num) -i +1 = 5 and mid(num ,len(num) - 4 ,1) =0 then if right(str,2)=零 then str = left(str,len(str) - 2) str=str +万end ifnext if right(str,2)=零 then str = left(str,len(str) - 2)end ifif left(str,4) =一十 or left(str,4) =壹拾 then str = right(str,len(str) 2)int lposlpos = pos(str,亿万)if lpos $#@60; $#@62; 0 then str =left(str , lpos +1) +mid(str,lpos +4)end ifif pos(val,.) =0 then if rmb then return str+hz[15] else return str end ifend ifstr = str + hz[15] //点or 元int il_iil_i = len(num2)if rmb and il_I $#@62; 2 thenil_i = 2end iffor i= 1 to il_i str_tmp=mid(num2,i,1)choose case str_tmp case 1 str=str+hz[1] case 2 str=str+hz[2] case 3 str=str+hz[3] case 4 str=str+hz[4] case 5 str=str+hz[5] case 6 str=str+hz[6] case 7 str=str+hz[7] case 8 str=str+hz[8] case 9 str=str+hz[9] case 0 str=str+零end choose if rmb and right(str,2) $#@60; $#@62; 零 then str=str+money[i]nextdo while right(str,2) = 零str = left(str,len(str) - 2)loopreturn str以上程序本人考虑到数字的各种组合,基本可以对任何数据进行转换成人民币大写。本程序供大家参考,请大家指教。




