以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  有关validPIN函数  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=116674)

--  作者:www111998
--  发布时间:2018/3/29 10:45:00
--  有关validPIN函数
狐表的validPIN的函数验证身份信息是不是权威的,为什么一个身份证号码在不同的电脑下验证结果不一样 ,难道是电脑设置的问题
求助有关validPIN函数的详解

--  作者:www111998
--  发布时间:2018/3/29 10:48:00
--  
一个身份证号码,在试用版的代码下可以验证,
在开发版的代码下不能验证
同一代码下,其他的几百个身份证号码都能验证,就一个不能验证,

--  作者:有点甜
--  发布时间:2018/3/29 10:50:00
--  

validPIN 只是简单的校验而已,有可能不准确,判断逻辑类似这样 https://jingyan.baidu.com/article/d5a880eb974b6513f147ccec.html

 

一些合法的身份证,通过此函数校验,有可能误报不正确的情况。

 

但是,你说的【不同电脑下执行得到不同结果】,这个是不可能的。

 

 


--  作者:www111998
--  发布时间:2018/3/29 11:05:00
--  
看样子又是语法错误的问题,请教validPIN函数的使用方法,以及语法
--  作者:有点甜
--  发布时间:2018/3/29 11:06:00
--  

 

http://www.foxtable.com/webhelp/scr/2624.htm

 


--  作者:www111998
--  发布时间:2018/3/29 11:15:00
--  
If e.DataCol.Name = "身份证号码" Then
    Dim dr As DataRow = e.DataRow
    If ValidPIN(dr("身份证号码")) = False Then
        \'If dr.IsNull("身份证号码") Then
        dr("出生年月") = Nothing
        dr("年龄") = Nothing
        dr("性别") = Nothing
    Else
        dr("出生年月") = ReadBirthday(dr("身份证号码"))
        dr("性别") = ReadSex(dr("身份证号码"))
        Dim t As TimeSpan = today - CDate(dr("出生年月"))
        dr("年龄") = Math.Round(t.TotalDays / 365.2422,2)
       \' End If
    End If
End If

这样下不能显示

--  作者:www111998
--  发布时间:2018/3/29 11:17:00
--  
If e.DataCol.Name = "身份证号码" Then
    Dim dr As DataRow = e.DataRow
    If ValidPIN(dr("身份证号码")) = False Then
        If dr.IsNull("身份证号码") Then
        dr("出生年月") = Nothing
        dr("年龄") = Nothing
        dr("性别") = Nothing
    Else
        dr("出生年月") = ReadBirthday(dr("身份证号码"))
        dr("性别") = ReadSex(dr("身份证号码"))
        Dim t As TimeSpan = today - CDate(dr("出生年月"))
        dr("年龄") = Math.Round(t.TotalDays / 365.2422,2)
        End If
    End If
End If

这样下能够显示各种信息,但不验证身份证号码了

--  作者:有点甜
--  发布时间:2018/3/29 11:20:00
--  
If e.DataCol.Name = "身份证号码" Then
    Dim dr As DataRow = e.DataRow
    If dr.IsNull("身份证号码") Then
        dr("出生年月") = Nothing
        dr("年龄") = Nothing
        dr("性别") = Nothing
    Else
        If ValidPIN(dr("身份证号码")) = False Then
            msgbox("身份证输入不正确")
        Else
            dr("出生年月") = ReadBirthday(dr("身份证号码"))
            dr("性别") = ReadSex(dr("身份证号码"))
            Dim t As TimeSpan = today - CDate(dr("出生年月"))
            dr("年龄") = Math.Round(t.TotalDays / 365.2422,2)
        End If
    End If
End If

--  作者:www111998
--  发布时间:2018/3/29 11:28:00
--  
还是显示不了,但是明白了,也就是说这个身份证号码通过不了验证,ValidPIN认为这样号码是错的,但是不验证的情况下也是可以识别性别,出生日期和年龄等信息的,是这样的吗?
--  作者:有点甜
--  发布时间:2018/3/29 11:31:00
--  
以下是引用www111998在2018/3/29 11:28:00的发言:
还是显示不了,但是明白了,也就是说这个身份证号码通过不了验证,ValidPIN认为这样号码是错的,但是不验证的情况下也是可以识别性别,出生日期和年龄等信息的,是这样的吗?

 

身份证号码贴出来看看,有可能是误报。

 

提取出生日期、年龄、性别等信息,是从固定位置提取的,所以这个没问题。

 

ValidPIN校验处理你提取的那些信息,还有别的一些校验的。