发布网友 发布时间:2022-04-24 20:34
共4个回答
热心网友 时间:2023-10-10 02:34
该函数作用,如果身份证合法,则返回该身份证号,如果不合法,返回一个空字符 FUNC sfjy PARA msfz ON ERRO RETU " " PRIV msfz,sn,i,dic dic= "0709100508040201060307091005080402 " msfz=ALLT(msfz) *出生日期预处理,仅接受15或18位字符串 DO CASE CASE LEN(msfz)=15 IF RIGHT(msfz,3)$ "996,997,998,999 " msfz=LEFT(msfz,6)+ "18 "+SUBS(msfz,7) ELSE msfz=LEFT(msfz,6)+ "19 "+SUBS(msfz,7) ENDI CASE LEN(msfz)=18 msfz=LEFT(msfz,17) OTHE RETU " " ENDC *检查身份证号字符的合法性 FOR i=1 TO 17 IF !ISDI(SUBS(msfz,i,1)) RETU " " ENDI ENDF *检查行政区划合法性 IF !LEFT(msfz,2)$ "11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51,52,53,54,61,62,63,64,65,71,81,82 " RETU " " ENDI *检查出生日期合法性 IF EMPT(DATE(VAL(SUBS(msfz,7,4)),VAL(SUBS(msfz,11,2)),VAL(SUBS(msfz,13,2)))) RETU " " ENDI *生成校检码 sn=0 FOR i=1 TO 17 sn=sn+VAL(SUBS(msfz,i,1))*VAL(SUBS(dic,i*2-1,2)) ENDF sn=MOD(sn,11) ON ERRO RETU msfz+SUBS( "10X98765432 ",sn+1,1)热心网友 时间:2023-10-10 02:34
只提供你方法,因为我没学过VFP。 你截取身份证的出生年龄字段,再与现在的时间相减(之间涉及到字符转换问题,请自行解决哈)。再作判断即可。 希望可以帮助你!热心网友 时间:2023-10-10 02:35
身份证是否正确只验证是验证不了的 只能通过验证控件判别是不是身份证格式`` 希望能解决你的疑惑热心网友 时间:2023-10-10 02:35
看身份证号的倒数第2位,奇数为男,偶数为女