Foxtable(狐表)用户栏目专家坐堂 → 求助,利用身份证号码自动提取出生年月日,及计算年龄。


  共有3391人关注过本帖树形打印复制链接

主题:求助,利用身份证号码自动提取出生年月日,及计算年龄。

帅哥哟,离线,有人找我吗?
菜鸟的梦
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:8 积分:129 威望:0 精华:0 注册:2017/8/18 22:47:00
求助,利用身份证号码自动提取出生年月日,及计算年龄。  发帖心情 Post By:2017/8/19 20:44:00 [只看该作者]

还有希望身份证号码是数质型,但设置了数质型,就不能设置18位数,利用身份证号码自动提取出生年月日,及计算年龄。
图片点击可在新窗口打开查看此主题相关图片如下:t.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
zstk7333
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:328 积分:2960 威望:0 精华:0 注册:2011/5/3 20:21:00
  发帖心情 Post By:2017/8/20 0:50:00 [只看该作者]

有一个ReadBirthday()的参数,可以直读取身份证的出生日期

 回到顶部
帅哥哟,离线,有人找我吗?
HJG_HB950207
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:5997 威望:0 精华:0 注册:2015/2/17 10:18:00
  发帖心情 Post By:2017/8/20 9:11:00 [只看该作者]

【员工资料】表属性 Datacolchanged
If e.DataCol.Name = "身份证"  Then  
    If e.DataRow.IsNull("身份证") Then  
      '  e.DataRow("出生日期") = Nothing  
      '  e.DataRow("性别") = Nothing  
    Else
          If  ValidPIN(e.DataRow("身份证"))  Then  
           e.DataRow("出生日期") = ReadBirthday(e.DataRow("身份证" ))
           e.DataRow("性别") = ReadSex(e.DataRow("身份证" ))
       Else
 e.Cancel = True '取
          MessageBox.show("身份证号码错!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
       End If
    End If
End If

Select Case e.DataCol.name 
    Case "出生日期"
        If e.DataRow.IsNull("出生日期") Then
            e.DataRow("年龄") = Nothing
        Else
            Dim tp As TimeSpan = Date.today - CDate(e.DataRow("出生日期"))
            e.DataRow("年龄") = Math.Round(tp.TotalDays / 365.2422,2)
        End If
End Select












 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/20 13:04:00 [只看该作者]

DataColChanged事件

 

Select Case e.DataCol.Name
    Case "身份证号"
        If e.DataRow.IsNull("身份证号") Then  '身份证号码是否为空
            e.DataRow("出生日期") = Nothing  '如果为空,则清除出生日期
            e.DataRow("性别") = Nothing  '如果为空,则清除出生日期
            e.DataRow("年龄") = Nothing '如果为空,则清除年龄
        Else
            '否则从身份证号码列中提取出生日期
            e.DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号"))
            e.DataRow("性别") = ReadSex(e.DataRow("身份证号"))
            Dim d As Date = ReadBirthday(e.DataRow("身份证号"))
            Dim y As Integer = d.year
            If format(d, "MMdd") <= Format(Date.Today, "MMdd") Then
                e.DataRow("年龄") = Date.Today.Year - y
            Else
                e.DataRow("年龄") = Date.Today.Year - y -1
            End If
        End If
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟的梦
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:8 积分:129 威望:0 精华:0 注册:2017/8/18 22:47:00
  发帖心情 Post By:2017/8/20 21:47:00 [只看该作者]

千言万语只有两字。谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟的梦
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:8 积分:129 威望:0 精华:0 注册:2017/8/18 22:47:00
  发帖心情 Post By:2017/8/20 21:49:00 [只看该作者]

千言万语只有两字。谢谢帮助消化!

 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟的梦
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:8 积分:129 威望:0 精华:0 注册:2017/8/18 22:47:00
求助 老师,用了你的代码,每次打开,年龄和出生日期没有记录呢?  发帖心情 Post By:2017/8/21 23:49:00 [只看该作者]

这个性别都有显示,年龄和出生日期没有显示,我删除了数据,重新编辑也是这样,
我看了很久,没明白,
图片点击可在新窗口打开查看此主题相关图片如下:fff.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/22 8:50:00 [只看该作者]

年龄和出生日期不要用表达式列,改为数据列。


另外身份证号不能使用数值列,有些身份证最后一位是字母的

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/22 10:35:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟的梦
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:8 积分:129 威望:0 精华:0 注册:2017/8/18 22:47:00
谢谢老师,一眼看出问题在哪儿。  发帖心情 Post By:2017/8/22 15:22:00 [只看该作者]

谢谢老师,一眼看出问题在哪儿。就是不能用表达式。

 回到顶部