Foxtable(狐表)用户栏目专家坐堂 → ValidPIN不可用对15位的旧身份证号码进行验证么


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

主题:ValidPIN不可用对15位的旧身份证号码进行验证么

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/2 23:07:00 [显示全部帖子]

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=26250&skin=0

 

[此贴子已经被作者于2018/9/2 23:06:52编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/4 14:27:00 [显示全部帖子]

看懂2楼的代码。

 

判断e.sender.text的length是15还是18位。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/4 15:20:00 [显示全部帖子]

你需要怎样的效果?目前的效果是什么?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/4 15:28:00 [显示全部帖子]

上传实例测试。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/4 16:47:00 [显示全部帖子]

If  e.DataCol.Name = "身份证号"
    If e.DataRow.IsNull("身份证号") Then  '身份证号码是否为空
        e.DataRow("出生年月") = Nothing  '如果为空,则清除出生日期
        e.DataRow("年龄") = Nothing '如果为空,则清除年龄
    Else
        Dim d As String = e.DataRow("身份证号")
        Dim r2,r3,r4,r5 As String
        If d.length = 15 Then
            Dim r1 As String = d.Substring(6,2)
            If r1 = "00" Then
            Else
                d = d.Insert(6,"19")
                r2 = StrReverse(d)
                For i As Integer = 17 To 1 Step -1
                    r3 = r2.Chars(i-1)
                    r4 = r4 + ( r3 * ((2 ^ i) Mod 11 )) '加权因子
                Next
            End If
            r4 = r4 Mod 11
            If r4 = "0" Then
                r4 = "1"
            ElseIf r4 = "1" Then
                r4 = "0"
            ElseIf r4 = "2" Then
                r4 = "X"
            ElseIf r4 = "3" Then
                r4 = "9"
            ElseIf r4 = "4" Then
                r4 = "8"
            ElseIf r4 = "5" Then
                r4 = "7"
            ElseIf r4 = "6" Then
                r4 = "6"
            ElseIf r4 = "7" Then
                r4 = "5"
            ElseIf r4 = "8" Then
                r4 = "4"
            ElseIf r4 = "9" Then
                r4 = "3"
            ElseIf r4 = "10" Then
                r4 = "2"
            End If
            r5 = d.SubString(d.length - 6,6) '6位密码
            d = d & r4 '15位升18位
        End If
        If ValidPIN(d) = False Then
            msgbox("身份证输入错误")
        Else
            e.DataRow("出生年月") = ReadBirthday(d)
            Dim dd As Date = ReadBirthday(d)
            Dim y As Integer = dd.year
            If format(dd, "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 If
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/4 18:00:00 [显示全部帖子]

以下是引用susu312在2018/9/4 17:59:00的发言:

e是private,在上下文中不可访问

 

1、关闭项目重新打开;

 

2、代码写到datacolchanged事件。


 回到顶部