文档库 最新最全的文档下载
当前位置:文档库 › 几个好用的VFP自定义函数源码

几个好用的VFP自定义函数源码

几个好用的VFP自定义函数源码
这是本人收集或自作的几个自定义函数,感觉很实用,特放出来共享。


&& 1.应该是最好的人民币小写转大写函数,用法:xtod(<数值型小写金额>)
FUNC xtod
PARAMETERS _xxje
_dxje=IIF(_xxje<0,'负','')
_temp=ROUND(ABS(_xxje)*100,0)
FOR i_tmp=LEN(ALLTRIM(STR(_temp,15)))-1 TO 0 STEP -1
_dxje=_dxje+SUBS('零壹贰叁肆伍陆柒捌玖',INT(ROUND(_temp/10^i_tmp,10))*2+1,2)+SUBS('分角元拾佰仟万拾佰仟亿拾佰仟万',i_tmp*2+1,2)
_temp=MOD(_temp,10^i_tmp)
ENDFOR
_dxje=STRTRAN(STRTRAN(STRTRAN(STRTRAN(STRTRAN(_dxje,'零仟','零'),'零佰','零'),'零拾','零'),'零角','零'),'零分','整')
_dxje=STRTRAN(STRTRAN(STRTRAN(STRTRAN(STRTRAN(_dxje,'零零','零'),'零零','零'),'零亿','亿'),'零万','万'),'零元','元')
RETURN IIF(_dxje='整','零元整',STRTRAN(STRTRAN(_dxje,'亿万','亿'),'零整','整'))


&& 2.字符串夹空格或字符(中英文皆可),用法:zfjkg(<字符串>,<被夹的字符串>),返回夹指定字符后的字符串
FUNC zfjkg
PARAMETER _jszf , _jskg
_fhzf = ''
_jssz = 0
_jszf = ALLTRIM(STRTRAN(_jszf,' ',''))
_jslen = LEN(_jszf)
FOR _jsi = 1 TO _jslen
_qczf = SUBSTR(_jszf,_jsi,1)
IF ASC(_qczf) > 32 AND ASC(_qczf) < 160
_fhzf = _fhzf + _qczf + _jskg
_jssz = 0
ELSE
_fhzf = _fhzf + IIF(MOD(_jssz,2) = 0,_qczf,_qczf + _jskg)
_jssz = _jssz + 1
ENDIF
ENDFOR
RETURN LEFT(_fhzf,LEN(_fhzf) - LEN(_jskg))


&& 3.在当前工作区中判断指定的字段是否存在,如存在返回真,否则返回假,用法:findfield(<字符型字段名>)
FUNC findfield
PARAMETER ff_name
ff_name = UPPER(ALLTRIM(ff_name))
ff_zds = FCOUNT()
FOR ff_i = 1 TO ff_zds
IF FIELD(ff_i) == ff_name
RETURN .T.
ENDIF
ENDFOR
RETURN .F.


&& 4.返回汉字星期几,用法:hzxq([日期]),日期为空时返回当天星期几
FUNC hzxq
PARAMETER hzxqtmp
IF PARAMETERS() = 0
hzxqtmp=DATE()
ENDIF
RETURN '星期'+SUBSTR('日一二三四五六',(DOW(hzxqtmp)-1) *2+1,2)


&& 5.返回汉字年月日或指定分隔符的年月日,用法:hzdate([日期]),日期为空时返回当天年月日(要用自定义函数ntoc)
FUNC hzdate
PARAMETER _lsdate , _lsdatec
IF PARAMETERS() = 0
_lsdate=DATE()
ENDIF
IF PARAMETERS()=2
RETURN ntoc(YEAR(_lsdate))+ALLTRIM(_lsdatec)+ntoc(MONTH(_lsdate))+ALLTRIM(_lsdatec)+ntoc(DAY(_lsdate))
ELSE
RETURN ntoc(YEAR(_lsdate))+'年'+ntoc(MONTH(_lsdate))+'月'+ntoc(DAY(_lsdate))+'日'
ENDIF


&& 6.数值转换为字符,当数值为0-9时在前面补一个字符'0'返回,否则原样返回,用法:ntoc(<数值>)
FUNC ntoc
PARAMETER ntocn
RETURN IIF(ntocn>9 .OR. ntocn<0,ALLTRIM(STR(ntocn)),'0' + STR(ntocn,1))


&&以上各自定义函数调用示例
? xtod(12030456780.98)
? zfjkg('abcd内蒙古f中国','**')
? hzxq()
? hzdate()
? hzdate(DATE(),'-')
return



相关文档