分享一个有关身份证的相关公式,很强大!能验证是否填写正确,能判断性别,能判断出生地
建立一个身份证号的字段,在字段属性中启用校验公式,填入AND(LEN($MF(身份证号)$)=18,
if(MFISNULL($MF(身份证号)$),true,if(len($MF(身份证号)$)=18,right($MF(身份证号)$,1)=if(round(mod(12-round(MOD((VALUE(MID($MF(身份证号)$,1,1))*7+VALUE(MID($MF(身份证号)$,2,1))*9+VALUE(MID($MF(身份证号)$,3,1))*10+VALUE(MID($MF(身份证号)$,4,1))*5+VALUE(MID($MF(身份证号)$,5,1))*8+VALUE(MID($MF(身份证号)$,6,1))*4+VALUE(MID($MF(身份证号)$,7,1))*2+VALUE(MID($MF(身份证号)$,8,1))*1+VALUE(MID($MF(身份证号)$,9,1))*6+VALUE(MID($MF(身份证号)$,10,1))*3+VALUE(MID($MF(身份证号)$,11,1))*7+VALUE(MID($MF(身份证号)$,12,1))*9+VALUE(MID($MF(身份证号)$,13,1))*10+VALUE(MID($MF(身份证号)$,14,1))*5+VALUE(MID($MF(身份证号)$,15,1))*8+VALUE(MID($MF(身份证号)$,16,1))*4+VALUE(MID($MF(身份证号)$,17,1))*2),11),0),11),0)=10,"X",mid(round(mod(12-round(MOD((VALUE(MID($MF(身份证号)$,1,1))*7+VALUE(MID($MF(身份证号)$,2,1))*9+VALUE(MID($MF(身份证号)$,3,1))*10+VALUE(MID($MF(身份证号)$,4,1))*5+VALUE(MID($MF(身份证号)$,5,1))*8+VALUE(MID($MF(身份证号)$,6,1))*4+VALUE(MID($MF(身份证号)$,7,1))*2+VALUE(MID($MF(身份证号)$,8,1))*1+VALUE(MID($MF(身份证号)$,9,1))*6+VALUE(MID($MF(身份证号)$,10,1))*3+VALUE(MID($MF(身份证号)$,11,1))*7+VALUE(MID($MF(身份证号)$,12,1))*9+VALUE(MID($MF(身份证号)$,13,1))*10+VALUE(MID($MF(身份证号)$,14,1))*5+VALUE(MID($MF(身份证号)$,15,1))*8+VALUE(MID($MF(身份证号)$,16,1))*4+VALUE(MID($MF(身份证号)$,17,1))*2),11),0),11),0),1,1)),true)))
失败提示填写 "请输入正确的身份证号"
再建个性别字段,在字段属性中 启用公式计算,填入IF(MOD(MID($MF(身份证号)$,17,1),2)=1,"男","女")
再建个出生年月日字段,在字段属性中 启用公式计算,填入MID($MF(身份证号)$,7,8)
再建个出生地的字段,启用回写公式前 先建立个表单 ,是身份证前6位对应的省市县的表单,然后用回写公式赋值给出生地字段即可,这个上图+ 上表单
|