Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

身份证问题

努力  发表于:2007-11-02 12:11:29  
复制

通过学习自己做了个输入身份号码自动显示*别、出身日期和年龄窗体,简单只能是18位号码。请哪位老师看一看如输入15位号码时代码怎么加。谢谢。
Private Sub 身份证号码_AfterUpdate()

Dim x
x = Mid([身份证号码], 17, 1)

If x Mod 2 = 1 Then

*别 = "男"

Else

*别 = "女"
End If

Me.[出生日期] = Mid([身份证号码], 7, 4) & "年" & Mid([身份证号码], 11, 2) & "月" & Mid([身份证号码], 13, 2) & "日"

Me.[年龄] = Year(Date) - Year(Me.[出生日期])

 

End Sub

 

Top
李双军 发表于:2007-11-02 13:17:23

 

先加一个条件来识别是多少位的身份证号码

If Len(身份证号码) = 18 Then

执行18位的算法

......

If Len(身份证号码) = 15 Then

执行15位的算法

就OK了



erica_li 发表于:2007-11-02 17:26:51

Dim Length As Integer
Length = Len(Me.身份证号)
    If Length = 15 Then
      Me.性别 = IIf(Val(Mid(Me.身份证号, 15, 1)) / 2 = Int(Val(Mid(Me.身份证号, 15, 1)) / 2), "女", "男")
      Me.出生日期 = "19" & Mid(身份证号, 7, 2) & "-" & Mid(身份证号, 9, 2) & "-" & Mid(身份证号, 11, 2)
   Else
   If Length = 18 Then
      Me.性别 = IIf(Val(Mid(Me.身份证号, 17, 1)) / 2 = Int(Val(Mid(Me.sfzh, 17, 1)) / 2), "女", "男")
      Me.出生日期 = Mid(身份证号, 7, 4) & "-" & Mid(身份证号, 11, 2) & "-" & Mid(身份证号, 13, 2)

End If

      Me.年龄 = Year(Date) - Year(Me.出生日期)
End Sub



努力 发表于:2007-11-02 19:50:46

谢谢二位老师指点,关键是  Length = Len(Me.身份证号)

谢谢



努力 发表于:2007-11-02 20:03:04
输入15位时年龄没显示,什么原因.请指教.

竹笛 发表于:2007-11-02 23:24:31

在 Me.年龄 = Year(Date) - Year(Me.出生日期) 前插入一行代码:

 

end if



贺德才 发表于:2007-11-03 09:18:07
On Error GoTo err_ccc
Me.txtTitle.SetFocus       '年龄框取得焦点,用于在身份证位数出错时,可以返回到身份证号码框
If Len(身份证号码) = 15 Then
Dim xb As Single
Me.出生年月 = "19" & Mid(Me.身份证号码, 7, 2) & "/" & Mid(Me.身份证号码, 9, 2) & "/" & Mid(Me.身份证号码, 11, 2)
Me.年龄 = Year(Now()) - Year(CDate(Me.出生年月))
xb = Mid(Me.身份证号码, 13, 3)
If xb Mod 2 = 1 Then
Me.性别 = "男"
Else
Me.性别 = "女"
End If
ElseIf Len(身份证号码) = 18 Then
Me.出生年月 = Mid(Me.身份证号码, 7, 4) & "/" & Mid(Me.身份证号码, 11, 2) & "/" & Mid(Me.身份证号码, 13, 2)
Me.年龄 = Year(Now()) - Year(CDate(Me.出生年月))
xb = Mid(Me.身份证号码, 15, 3)
If xb Mod 2 = 1 Then
Me.性别 = "男"
Else
Me.性别 = "女"
End If
Else
MsgBox "你输入的身份证位数不正确!"    'Me.Undo
Me.身份证号码.SetFocus
End If
exit_ccc:
Exit Sub
err_ccc:
If Err.Number = 13 Then
MsgBox "你输入的身份证号码年月日有误,请检查!"
Me.身份证号码.SetFocus
MsgBox Err.Description
End If
Resume exit_ccc

努力 发表于:2007-11-03 16:26:54
’以下是经过几位老师指点后修改的,现上传共享。
‘’’’努力
Dim Length As Integer
Length = Len(Me.身份证号)
    If Length = 15 Then
      Me.性别 = IIf(Val(Mid(Me.身份证号, 15, 1)) / 2 = Int(Val(Mid(Me.身份证号, 15, 1)) / 2), "女", "男")
      Me.出生日期 = "19" & Mid(身份证号, 7, 2) & "-" & Mid(身份证号, 9, 2) & "-" & Mid(身份证号, 11, 2)
      Me.年龄 = Year(Date) - Year(Me.出生日期)
    Else
   If Length = 18 Then
      Me.性别 = IIf(Val(Mid(Me.身份证号, 17, 1)) / 2 = Int(Val(Mid(Me.身份证号, 17, 1)) / 2), "女", "男")
      Me.出生日期 = Mid(身份证号, 7, 4) & "-" & Mid(身份证号, 11, 2) & "-" & Mid(身份证号, 13, 2)
End If
 Me.年龄 = Year(Date) - Year(Me.出生日期)
End If
End Sub


Big Young 发表于:2007-11-03 16:54:58
很实用

总记录:8篇  页次:1/1 9 1 :