标题:vfp中年月转大写,用什么函授,求回复。
只看楼主
dbf永动机
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2022-8-30
得分:0 
repl all 年份列 with chrt(年份列,'0123456789','零一二三四五六七八九')

同理,如果一个字段里有中文和数字,或者英文,想把数字删掉,可以用:
repl all 某列 with chrt(某列,'0123456789','')   即可, 替换所有英文字母同理。


注意前者是一一对照关系,顺序可以变,但是前后的顺序要一致,后者把一些内容都替换成空,那么被替换的内容可以不按顺序。替换成空,两个''之间没有东西就是替换成空,加一个空格就是把他们替换成一个空格。
2022-09-05 11:14
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
数字转大写金额的好像要难点,要判读金额大小。。。
2022-09-05 22:13
bdx808
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2009-5-9
得分:0 
谢谢!学习了
2022-09-06 08:07
aqyejun
Rank: 3Rank: 3
等 级:论坛游民
威 望:9
帖 子:121
专家分:99
注 册:2010-6-11
得分:0 
程序代码:
FUNCTION   Dx1
    PARAMETERS nAmount
    PRIVATE ALL LIKE L_*
    L_S1='零壹贰叁肆伍陆柒捌玖'
    L_S2='亿仟佰拾万仟佰拾亿仟佰拾万仟佰拾元角分'
    nAmount=LTRIM(STR(nAmount*100,LEN(L_S2)/2))
    L_LEN=LEN(nAmount)
    L_SS2=RIGH(L_S2,2*L_LEN)
    L_DX=''
    L_0JS=0  &&连续零的个数
    L_N=0
    DO WHILE L_N<L_LEN
        L_N=L_N+1
        L_SZ=SUBSTR(nAmount,L_N,1)
        L_SZ=SUBSTR(L_S1,2*VAL(L_SZ)+1,2)
        L_DW=SUBSTR(L_SS2,2*L_N-1,2)
        IF L_SZ=''
            L_SZ=''
            DO CASE
                CASE L_DW$'亿元'
                CASE L_DW=''
                    IF RIGH(L_DX,2)='亿'
                        L_DW=''
                    ENDIF
                OTHERWISE
                    L_DW=''
            ENDCASE
            L_0JS=L_0JS+1
        ELSE
            IF L_0JS>0.AND.!(RIGH(L_DX,2)+L_DW)$L_SS2
                L_SZ=''+L_SZ
            ENDIF
            L_0JS=0
        ENDIF
        L_DX=L_DX+L_SZ+L_DW
    ENDDO
    L_DX=L_DX+IIF(RIGH(nAmount,1)='0','','')
    RETURN  L_DX

【独叶为舟】工作室
2022-09-06 08:15
aqyejun
Rank: 3Rank: 3
等 级:论坛游民
威 望:9
帖 子:121
专家分:99
注 册:2010-6-11
得分:0 
SET PROCEDURE TO Dx1.PRG
dx1(金额)

【独叶为舟】工作室
2022-09-06 08:17
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
2022-09-06 08:21
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用sam_jiang在2022-9-5 22:13:52的发言:

数字转大写金额的好像要难点,要判读金额大小。。。

木瓜大师的myfll有现成的函数,NToC(nNum)
2022-09-06 08:23
aqyejun
Rank: 3Rank: 3
等 级:论坛游民
威 望:9
帖 子:121
专家分:99
注 册:2010-6-11
得分:0 
程序代码:
FUNCTION   Dx2
    PARAMETERS nAmount,IsDW
    nDZS=STRTRAN(ALLTRIM(STR(nAmount,18,2)),".","")   &&把小数点去掉
    cHZDX="零壹贰叁肆伍陆柒捌玖"
    cDW="分角元拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿"
    cRMBDX=""
    nCd=LEN(nDZS)
    FOR IsDW=1 TO LEN(nDZS)
        cNumbers=SUBSTRC(cHZDX,INT(VAL(SUBSTR(nDZS,IsDW,1))+1),1)  && 数字转换
        IF IsDW=1     &&如果要单位
            cDWs=SUBSTRC(cDW,nCd,1)
        ELSE
            cDWs=SPACE(2)
        ENDIF
        cRMBDX=cRMBDX+cNumbers+cDWs
        nCd=nCd-1
    ENDFOR
    RETURN  cRMBDX


这个函数结果只显示数字,不显示单位,可以套打票据。

【独叶为舟】工作室
2022-09-06 08:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508128-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.068146 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved