在表单中如何通过文本框中的“身份证号”在另一文本框显示“出生日期”
请问各位老师,我想在表单中通过文本框中的“身份证号”在另一文本框显示“出生日期”。不知如何实现?
程序代码:if len(sfzh)=18 thisfrom.text2.value=subs(sfzh,7,8) else thisfrom.text2.value='19'+subs(sfzh,7,6) endif
Thisform.AddProperty("Sfzh","") && 为表单增加一个属性,用于保存Text1.Value
程序代码:With Thisform
.Sfzh=Alltrim(.Text1.Value)
* 判断.Text1.Value 值中是否有非数字字符
If Len(Chrtran(.Sfzh,"0123456789",""))!=0
=Messagebox("身份证中含有非数字字符")
Return .Text1
Endif
* 判断身份证长度
If Not Inlist(Len(.Sfzh),15,18)
=Messagebox("身份证长度必须 15位或18位")
Return .Text1
Endif
.Sfzh=Iif(Len(.Sfzh)=18,Substr(.Sfzh,7,8),"19"+Substr(.Sfzh,7,6))
* 判断年份
If Not Between(Val(Left(.Sfzh,4)),1900,Year(Date()))
=Messagebox("年份必须在 1900-"+Transform(Year(Date()))+" 之间")
Return .Text1
Endif
* 判断月份
If Not Between(Val(Substr(.Sfzh,5,2)),1,12)
=Messagebox("月份必须在 1-12 之间")
Return .Text1
Endif
* 判断日
nDay=Day(Gomonth(Date(Val(Left(.Sfzh,4)),Val(Substr(.Sfzh,5,2)),1),1)-1)
If Not Between(Val(Substr(.Sfzh,7,2)),1,nDay)
=Messagebox("天数必须在 1-"+Transform(nDay)+" 之间")
Return .Text1
Endif
Endwith Thisform.Text2.Value=Ctod(Transform(Thisform.Sfzh,"@R 9999-99-99"))

