| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2175 人关注过本帖, 1 人收藏
标题:一个简单的小问题求解
只看楼主 加入收藏
晓礼
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2017-8-17
结帖率:100%
收藏(1)
已结贴  问题点数:16 回复次数:4 
一个简单的小问题求解
我想在text1中输入身份证号码然后在text2中自动得到该身份证号码的年龄,在text3中得到该身份证号是男是女!
搜索更多相关主题的帖子: text1 身份证号码 身份证号 自动 年龄 
2017-09-01 09:14
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:8 
程序代码:
Private Sub Command1_Click()
If Len(Text1.Text) <> 18 Then
MsgBox "您输入的身份证号码位数不是18位,请检查!", 16, "提醒"
Exit Sub
Else
If (Year(Now()) - Mid(Text1.Text, 7, 4)) < 0 Or (Year(Now()) - Mid(Text1.Text, 7, 4)) > 120 Then '设定年龄在0岁至120岁之间,低于0岁或高于120岁则报错。
MsgBox "您输入的身份证号码第7位至第10位年份输错,请检查!", 16, "提醒"
Exit Sub
Else
Text2.Text = Year(Now()) - Mid(Text1.Text, 7, 4)
If (Mid(Text1.Text, 17, 1) Mod 2) = 0 Then
Text3.Text = ""
Else
Text3.Text = ""
End If
End If
End If

End Sub

Private Sub Form_Load()
    Form1.Move (Screen.Width - Form1.Width) / 2, (Screen.Height - Form1.Height) / 2
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub

2017-09-01 10:03
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:0 
楼上正解,直接用Mid获取年龄,再与now中的年份计算即可
2017-09-01 10:22
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:8 
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
Dim QYM, SSMC, XX As Integer

Private Sub Command1_Click()
'解析身份证
If Not Len(Text1.Text) = 18 Then
    MsgBox "对不起!二代身份证号码必须是18各数字或17各数字加一个字母组成!", 16, "身份证位数不对!"
    Exit Sub
End If
If IsNumeric(Left(Text1.Text, 17)) = False Then
    MsgBox "对不起!二代身份证号码的前17位必须是数字!", 16, "身份证的前17位不能有其他字符!"
    Exit Sub
End If
Dim CSHN As String, CSHY As String, CSHR As String, NL As Integer, XB As String, XBX As String, SHF1 As String, SHF2 As String, SFZH As String, CSNYR As String
SFZH = Text1.Text
SHF1 = Left(SFZH, 2)     '身份证的前二位是省份代码,必须在 QYM 数组内,否则检测不多省份
CSHN = Mid(SFZH, 7, 4)
If Val(CSHN) > Year(Date) Or Val(CSHN) < Year(Date) - 150 Then      '这个150是最大的极限年龄
    MsgBox "错误!身份证的年份不在居民生存年份范围!", 16, "提示!"
    Exit Sub
End If
CSHY = Mid(SFZH, 11, 2)
If Val(CSHY) > 12 Or Val(CSHY) < 1 Then
    MsgBox "错误!身份证的月份不在月份范围!", 16, "提示!"
    Exit Sub
End If
CSHR = Mid(SFZH, 13, 2)
If Val(CSHR) > 31 Or Val(CSHR) < 1 Then
    MsgBox "错误!身份证的日子不在日子范围!", 16, "提示!"   '这里没有检测大月、小月及二月的具体日期检测,例如大月=31,小月=30,二月=28或29,这个检测你自己完成吧
    Exit Sub
End If
CSNYR = CSHN & "-" & CSHY & "-" & CSHR
NL = DateDiff("YYYY", CDate(CSNYR), Date)
XB = Mid(SFZH, 17, 1)
If Val(XB) Mod 2 = 0 Then
XBX = ""
Else
XBX = ""
End If
For I = 0 To XX
    If SHF1 = QYM(I) Then SHF2 = SSMC(I)
Next I
Text2(0).Text = CSNYR: Text2(1).Text = NL: Text2(2).Text = XBX: Text2(3).Text = SHF2
End Sub

Private Sub Form_Load()
QYM = Array("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")
SSMC = Array("北京市", "天津市", "河北省", "山西省", "内蒙古自治区", "辽宁省", "吉林省", "黑龙江省", "上海市", "江苏省", "浙江省", "安徽省", "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区", "海南省", "重庆市", "四川省", "贵州省", "云南省", "西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区", "新疆维吾尔自治区")
XX = UBound(QYM)
End Sub

这个是否符合你的要求,是我以前做的,找出来给你参考。

请不要选我!!!
2017-09-02 00:02
晓礼
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2017-8-17
收藏
得分:0 
谢谢三位朋友这么详细的讲解。
2017-09-02 07:29
快速回复:一个简单的小问题求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021700 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved