以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- ValidPIN不可用对15位的旧身份证号码进行验证么 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124236) |
||||
-- 作者:susu312 -- 发布时间:2018/9/2 22:04:00 -- ValidPIN不可用对15位的旧身份证号码进行验证么 老师 ,如题?ValidPIN不可用对15位的旧身份证号码进行验证么? 如果确实不行的话,那15位的该如何验证呀?我还以为都可以验证? |
||||
-- 作者:有点甜 -- 发布时间:2018/9/2 23:07:00 -- http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=26250&skin=0
[此贴子已经被作者于2018/9/2 23:06:52编辑过]
|
||||
-- 作者:susu312 -- 发布时间:2018/9/4 14:03:00 -- 以下是引用有点甜在2018/9/2 23:07:00的发言:
http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=26250&skin=0
[此贴子已经被作者于2018/9/2 23:06:52编辑过]
老师,,对于身份证那个text控件的,validating和keydown,应该如何写呀,因为 ,它可能是15位也可能是18位,它可能只有数字,也可能含有字母,所以,我就实在理不清了 |
||||
-- 作者:有点甜 -- 发布时间:2018/9/4 14:27:00 -- 看懂2楼的代码。
判断e.sender.text的length是15还是18位。 |
||||
-- 作者:susu312 -- 发布时间:2018/9/4 15:13:00 -- 以下是引用有点甜在2018/9/4 14:27:00的发言:
看懂2楼的代码。
判断e.sender.text的length是15还是18位。
老师,我在表的datacolchanged事件中写代码,但是,貌似没效果,您帮我看看哪里不对哈 If e.DataCol.Name = "cardID" Then \'\'执行15位升18位 Dim d1 As Date = ReadBirthday(e.DataRow("cardID")) Else |
||||
-- 作者:有点甜 -- 发布时间:2018/9/4 15:20:00 -- 你需要怎样的效果?目前的效果是什么? |
||||
-- 作者:susu312 -- 发布时间:2018/9/4 15:26:00 -- 以下是引用有点甜在2018/9/4 15:20:00的发言:
你需要怎样的效果?目前的效果是什么?
需求:
1、身份证输入时进行验证,允许输入15位或者18位,多输入不允许,允许输入字母 2、身份证输入时,如果正确,则出生年月和年龄也对自动写入表
现在这些都没有实现 |
||||
-- 作者:有点甜 -- 发布时间:2018/9/4 15:28:00 -- 上传实例测试。 |
||||
-- 作者:susu312 -- 发布时间:2018/9/4 16:26:00 -- 以下是引用有点甜在2018/9/4 15:28:00的发言:
上传实例测试。
我在表的datacolChanged事件中加入了代码,在窗口中身份证控件的validating 和keydown中加入了代码,但是这个就是老是说e有啥问题 ,这个是我之前验证18位的身份证号,但是最近发现有15位的就不行 了。
而且身份证还可以包括字母,这个也没有验证
|
||||
-- 作者:有点甜 -- 发布时间: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 |