vfp 15位身份证号自动变成18位

来源:百度知道 编辑:UC知道 时间:2024/05/30 16:59:53
在18位的sfzh字段中输入15位的身份证号如何自动变成18位的?
高人指点!
vfp中 如何输入15位身份证号后自动生成18位的身份证号?
也就是身份证号位数的自动修改。
打个比方:我的老15位的身份证号为:230302781008111,输入后自动变成新身份证号:23030219781008111X
谢谢懒猫盖盖,但是第18位应该是校验位,应该有个算法的!

******下面是返回正确的18位身份证的自定义函数,自定义函数的使用方法请参照vfp的基础材料(略)。
*-----------------------------
*
*此函数功能:输入的15位或18位身份证号,返回正确的18位的身份证号。
*
*---------------------------

FUNCTION IDCardTF
PARAMETERS cNumber
#DEFINE InvalidSize "身份证号码长度不正确!"
#DEFINE InvalidChar "身份证号码包括非法字符!"
#DEFINE InvalidDate "出生日期无效!"
#DEFINE InvalidReturnValue ".F."
PRIVATE cString
DO CASE
CASE LEN(cNumber) = 15
cString = STUFF(cNumber,7,0,"19")
CASE LEN(cNumber) = 18
cString =LEFT(ALLTRIM(cNumber),17)
OTHERWISE
MESSAGEBOX(InvalidSize,48,"信息提示")
RETURN InvalidReturnValue
ENDCASE
PRIVATE i,n,iRet
STORE 0 TO iRet
FOR i = 1 TO 17
n = SUBSTR(cString,i,1)
IF NOT ISDIGIT(n)
MESSAGEBOX(invalidChar,48,"信息提示")
RETURN invalidReturnValue
ENDIF
n = 2 ^ (18 - i) % 11 * VAL(n)
iRet = iRet + n
ENDFOR
iRet