Foxtable(狐表)用户栏目专家坐堂 → 怎样提取后6位


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

主题:怎样提取后6位

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


加好友 发短信
等级:三尾狐 帖子:776 积分:6205 威望:0 精华:0 注册:2012/6/11 17:21:00
怎样提取后6位  发帖心情 Post By:2012/11/9 22:11:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20121109220420.png
图片点击可在新窗口打开查看

怎样在表 身份证号列提取后6位到密码列

请师傅指点,谢谢!


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


加好友 发短信
等级:狐神 帖子:4628 积分:33772 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2012/11/9 22:21:00 [只看该作者]

substring

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/9 22:31:00 [只看该作者]

 嗯嗯,直接 Right("123456", 3) 就行

 Right(字符, 数量)

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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2012/11/9 22:32:00 [只看该作者]

'表属性-数据-DataColChanged
If e.DataCol.Name = "身份证号" Then 
    If e.DataRow.IsNull("身份证号") Then
        e.DataRow("密码") = Nothing
    Else
        Dim d As String = e.DataRow("身份证号")
        If ValidPIN(d) Then
            'd = d.SubString(d.length - 6,6)

           d = right(d,6) '这样简单点
        e.DataRow("密码") = d
        Else
            messagebox.show("身份证号码不正确!")
            e.DataRow("密码") = Nothing
        End If
    End If
End If

[此贴子已经被作者于2012-11-9 22:35:29编辑过]

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


加好友 发短信
等级:三尾狐 帖子:776 积分:6205 威望:0 精华:0 注册:2012/6/11 17:21:00
  发帖心情 Post By:2012/11/9 22:49:00 [只看该作者]

谢谢!

If e.DataCol.Name = "身份证号" Then
If e.DataRow.IsNull("身份证号") Then
e.DataRow("密码") = Nothing
Else
Dim d As String = e.DataRow("身份证号")
If ValidPIN(d) Then

d = right(d,6) '这样简单点
e.DataRow("密码") = d
Else
messagebox.show("身份证号码不正确!")
e.DataRow("密码") = Nothing
End If
End If
End If

怎样18位可以,但还有15位就不行了。


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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2012/11/9 22:55:00 [只看该作者]

ValidPIN

用于校验身份证号码是否正确,如果正确,返回True,否则返回False

 

如果“ValidPIN”函数出错,就要找狐爸了。(这个函数我也没测试过。)


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


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2012/11/9 22:58:00 [只看该作者]

身份证号码是18位的

直接substring(12,6)


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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2012/11/10 10:37:00 [只看该作者]

身份证号码15位、18位可以同时输入了,请各位测试。

 

'表属性-数据-DataColChanged
If e.DataCol.Name = "身份证号" Then
    If e.DataRow.IsNull("身份证号") Then
        e.DataRow("密码") = Nothing
    Else
        Dim d As String = e.DataRow("身份证号")
        For i As Integer = 0 To d.Length - 1
            If Char.IsLetterOrDigit(d.Chars(i)) = False Then
                Messagebox.Show("身份证号码不正确!")
                e.DataRow("密码") = Nothing
                Return
            End If
        Next
        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) Then
            If r5 Is Nothing Then
                d = right(d,6)
            Else
                d = r5
            End If
            e.DataRow("密码") = d
        Else
            messagebox.show("身份证号码不正确!")
            e.DataRow("密码") = Nothing
        End If
    End If
End If


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/10 10:43:00 [只看该作者]

 直接写一个15位的函数估计会更方便。

 转换规则太繁琐了。
[此贴子已经被作者于2012-11-10 10:43:18编辑过]

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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2012/11/10 10:53:00 [只看该作者]

希望下次更新的时候,狐爸把15位身份证号码的判断也加进“ValidPIN”函数吧。

 回到顶部
总数 13 1 2 下一页