以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]这段代码如何写?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73282)

--  作者:ahbrq
--  发布时间:2015/8/15 17:41:00
--  [求助]这段代码如何写?

 
图片点击可在新窗口打开查看此主题相关图片如下:完整身份证替换.png
图片点击可在新窗口打开查看

 

我在“储蓄积分”表中前后导入两批数据,区别在于第一次身份证号码后三位是0截除了,这次身份证号码是完整的,现在要用完整的身份证替换不完整的,代码怎么写?写在哪儿?

 

比如:艾永华 340104194106270 

        艾永华 340104194106270015  要用完整的身份证替换不完整的

 

程序大于2M,我上传了截图。谢谢


--  作者:czy
--  发布时间:2015/8/15 18:59:00
--  

看不出规律

 

你直接增加一个表达式的逻辑列,公式:Len([身份证号码]) = 18,这样逻辑列为真的就是符合的身份证号码


--  作者:ahbrq
--  发布时间:2015/8/15 19:59:00
--  
 同一个人有2个身份证号码,一个15位一个18位,如果这两个身份证号码前15位相同,就用18位的号码代替16位的号码。如果同1个人只有1个身份证号码就不用处理。
--  作者:客人
--  发布时间:2015/8/15 20:31:00
--  
 同一个人有2个身份证号码,一个15位一个18位,如果这两个身份证号码前15位相同,就用18位的号码代替16位的号码。如果同1个人只有1个身份证号码就不用处理。
--  作者:ahbrq
--  发布时间:2015/8/15 20:37:00
--  
 同一个人有2个身份证号码,一个15位一个18位,如果这两个身份证号码前15位相同,就用18位的号码代替16位的号码。如果同1个人只有1个身份证号码就不用处理。

 

 

要实现这个功能,代码怎么写?


--  作者:czy
--  发布时间:2015/8/15 21:01:00
--  

这样试试,按钮代码

 

For Each r As DataRow In DataTables("储蓄积分").DataRows
    If r("身份证号码").Length = 18
        Dim dr As DataRow = DataTables("储蓄积分").Find("身份证号码 = \'" & r("身份证号码").SubString(0,6) & r("身份证号码").SubString(8,9) & "\'")
        If dr IsNot Nothing Then \'如果找到的话
            dr("身份证号码") = r("身份证号码")
        End If
    End If
Next


--  作者:ahbrq
--  发布时间:2015/8/15 22:08:00
--  


        Dim dr As DataRow = DataTables("储蓄积分").Find("身份证号码 = \'" & r("身份证号码").SubString(0,6) & r("身份证号码").SubString(8,9) & "\'")

 

上面的语句能找到同名,且身份证号码前15位相同么?


--  作者:ahbrq
--  发布时间:2015/8/15 22:56:00
--  
代码上去,在AFTECHANGED里,重置列后30分钟没反应,挂机睡觉
[此贴子已经被作者于2015/8/15 22:56:49编辑过]

--  作者:czy
--  发布时间:2015/8/15 22:57:00
--  
行不行你可以试试 15位和18位号码前15位是不会相同的
--  作者:ahbrq
--  发布时间:2015/8/15 23:02:00
--  

你理解错了,第一次导入的15位号码,是因为某种原因18位号码后三位全是0,所以就只截取前15位,现在能导入完整的18位号码了。

 

 

 

所以就要把原先的15位号码替换为18位。请看我前面的图。

[此贴子已经被作者于2015/8/15 23:02:27编辑过]