当前位置: 首页 > 期刊 > 《航空航天医药》 > 2000年第2期
编号:10206202
在PowerBuilder 中实现小写金额转换成大写金额
http://www.100md.com 《航空航天医药》 2000年第2期
     作者:曹滨

    单位:曹滨(大庆市第二医院计算机室 163461)

    关键词:

    航空航天医药000245 随着数据库技术在各行各业的广泛应用,作为企业级数据库前端开发工具的PowerBuilder日益成为开发人员的得力助手。PowerBuilder以其开放的体系结构,友好的用户界面和简洁高效的开发环境赢得了众多程序员的喜爱,在数据库开发工具领域占据了高达44%的市场份额。

    PowerBuilder是由多个功能模块组成的可视化集成开发环境,是面向对象的开发工具,用它可以方便地建立起基于Windows的分布式数据库应用。其功能模块完成应用管理、窗口对象设计、菜单对象设计、数据窗对象设计和数据库查询等工作,这些功能模块由于PowerBuilder提供的色彩丰富的工具条而被称作“Painter”(画板)。
, http://www.100md.com
    在编程中遇到药在程序的很多地方需要打印金额的中文大写,如打印发票、记账凭证等,PowerBuilder没有提供这样一个数字转换成金额大写的函数。我就自己编了一个通用函数。

    首先要创建新函数,并且定义参数。在工具栏单击‘function’图标按钮,打开‘Select Function’对话框,单击‘New’按钮创建一个新函数,并且定义参数:

    在定义完参数后,单击‘OK’按钮开始输入函数源代码,其源代码如下:

    int i,lendec,lenint

    string numstr,a,b,c,d,bbak

    numstr=string(memo_dec,“#0.00”)
, 百拇医药
    lenint=len(mid(numstr,1,pos(numstr,‘.’)-1))

    if right(numstr,2)=‘00'then

    lendec=0

    else

    lendec=2

    end if

    string dxint[13],dxdec[2],sz[13]

    string dxstr=“万仟佰拾亿仟佰拾万仟佰拾元”

    string szstr=“零壹贰叁肆伍陆柒捌玖”
, http://www.100md.com
    for i=1 to 13

    dxint[i]=mid(dxstr,26-i*2+1,2)

    if i<1 1 then

    sz[i]=mid(szstr,i*2-1,2)

    else

    sz[i]=“ ”

    end if

    next

    dxdec[1]=“角”

    dxdec[2]=“分”
, 百拇医药
    dxstr=“ "

    for i=1 to lenint

    a=mid(mid(numstr,1,lenint),i,1)

    b=sz[integer(a)+1]

    c=dxint[lenint-i+1]

    if dxstr <>“ ”then

    d=mid(dxstr,len(dxstr)-1,2)

    else

    d=“ ”

    end if
, http://www.100md.com
    if b=“零”and(d=“零”or b=bbak 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

    dxstr=mid(dxstr,1,len(dxstr)-2)

    d=mid(dxstr,len(dxstr)-1,2)

    if(c=“元”and d=“万”or c=“万”and d=“亿”)then c=“”

    end if
, http://www.100md.com
    dxstr=dxstr+b+c

    bbak=b

    next

    for i=1 to lendec

    a=mid(mid(numstr,lenint+2,lendec),i,1)

    if a=“0”and dxdec[i]=“分”then

    b=“”

    else

    b=sz[integer(a)+1]

    end if

, http://www.100md.com     if a<>“0”then

    dxstr=dxstr+b+dxdec[i]

    else

    dxstr=dxstr+b

    end if

    next

    if lendec=0 then dxstr=dxstr+“整”

    return dxstr

    调用方法:

    string memo_je-char ∥返回中文金额字符串

    dec memo_je ∥需要转换金额

    memo_je=3455.12

    ∥调用金额转换函数

    memo_je_char=f_numbertochar(memo_je)… … … 2000年3月收稿, 百拇医药