access中[身份证号]字段有效性规则的代码实现,以及自动从[身份证号]提取出生日期和性别

Option  Compare Database
Public  sex, ymd

Private   Sub  身份证号_BeforeUpdate(Cancel  As   Integer )
    
Dim  c1, I
    c1 
=   LTrim ( Trim (身份证号.Text))
    I 
=   Len (c1)
    
Select   Case  I
        
Case   15
            
If   IsDate ( Mid (c1,  7 2 &   " / "   &   Mid (c1,  9 2 &   " / "   &   Mid (c1,  11 2 ))  =   False   Then
                
MsgBox  ( " 身份证号出生日期格式错。 " )
            
End   If
            sex 
=   CInt ( Right (c1,  1 ))  Mod   2   ' 性别
            ymd  =   " 19 "   &   Mid (c1,  7 2 &   Mid (c1,  9 2 &   Mid (c1,  11 2 )
        
Case   18
            
Dim  Code, N1  ' 18位,末位校验
             If   IsDate ( Mid (c1,  7 4 &   " / "   &   Mid (c1,  11 2 &   " / "   &   Mid (c1,  13 2 ))  =   False   Then   MsgBox  ( " 身份证号出生日期格式错。 " )
            N1 
=   0
            
For  I  =   18   To   2  Step  - 1
                N1 
=  N1  +  ( 2   ^  (I  -   1 Mod   11 *  ( Mid (c1, ( 19   -  I),  1 ))
            
Next
                N1 
=  N1  Mod   11
                
Select   Case  N1  ' Code=Switch(N1=0,"1",N1=1,"0",N1=2,"X")
                     Case   0 : Code  =   " 1 "
                    
Case   1 : Code  =   " 0 "
                    
Case   2 : Code  =   " X "
                    
Case   Else : Code  =  ( 12   -  N1)  &   ""
                
End   Select
                
If  Code  <>   UCase ( Right (c1,  1 ))  Then
                    
MsgBox  ( " 身份证号码有误。 " )
                
End   If
            sex 
=   CInt ( Mid (c1,  17 1 ))  Mod   2   ' 性别
            ymd  =   Mid (c1,  7 4 &   Mid (c1,  11 2 &   Mid (c1,  13 2 )
        
Case   Else
            
MsgBox  ( " 身份证号位数不对,必须为15或18位。 " )
 
End   Select
End Sub

Private   Sub  身份证号_LostFocus()
    出生日期.SetFocus
    出生日期.Text 
=  ymd
    性别.SetFocus
    
If  sex  =   1   Then
        性别.Text 
=   " "
    
Else
        性别.Text 
=   " "
    
End   If
End Sub
 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值