Foxtable(狐表)用户栏目专家坐堂 → [求助]这段代码如何写?


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

主题:[求助]这段代码如何写?

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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
[求助]这段代码如何写?  发帖心情 Post By:2015/8/15 17:41:00 [显示全部帖子]

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

 

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

 

比如:艾永华 340104194106270 

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

 

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


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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/15 19:59:00 [显示全部帖子]

 同一个人有2个身份证号码,一个15位一个18位,如果这两个身份证号码前15位相同,就用18位的号码代替16位的号码。如果同1个人只有1个身份证号码就不用处理。

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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/15 20:37:00 [显示全部帖子]

 同一个人有2个身份证号码,一个15位一个18位,如果这两个身份证号码前15位相同,就用18位的号码代替16位的号码。如果同1个人只有1个身份证号码就不用处理。

 

 

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


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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/15 22:08:00 [显示全部帖子]


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

 

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


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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/15 22:56:00 [显示全部帖子]

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

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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/15 23:02:00 [显示全部帖子]

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

 

 

 

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

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

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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/15 23:16:00 [显示全部帖子]

图片点击可在新窗口打开查看

 

 

就是:1、找出同名同姓的而且身份证号码前15位相同的记录,比如“艾永华”“安建徽”“包茂进”

         2、用18位的身份证号码替换15位的。比如“包茂进”的“330724195810127”替换为“330724195810127117”。你看包茂进身份证号码前15位是相同的吧。

 

我不知道代码怎么写,请教下。


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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/15 23:45:00 [显示全部帖子]

代码写在表属性“datacolchanged“事件中,选择”身份证号码“列或者整张表,运行重置列,几分钟后就退出程序。

 

在进去看,没有变化。


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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/16 21:30:00 [显示全部帖子]

考虑重名的情况下,19楼代码是这样么:

 


If e.DataCol.Name = "客户名称" Then
    If len(e.DataRow("身份证号码")) < 18 Then
        Dim dr As DataRow
        dr = DataTables("储蓄积分").Find("    [客户名称] = '" & e.NewValue & "'  and     [身份证号码] = '" & e.NewValue & "'  “,"身份证号码 desc")
        If dr IsNot Nothing Then
            e.DataRow("身份证号码") = dr("身份证号码")
        End If
    End If
End If
 
dr = DataTables("储蓄积分").Find("    [客户名称] = '" & e.NewValue & "'  and     [身份证号码] = '" & e.NewValue & "'  “,"身份证号码 desc")  
上面找到同名且身份证号码前15位相同的记录怎么写?
[此贴子已经被作者于2015/8/16 21:35:08编辑过]

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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2015/8/16 22:49:00 [显示全部帖子]

 单独把数据导出来,用11楼的代码做没有问题。但是放在”储蓄积分“数据表的"datacolchanged”事件中运行程序就退出,没有得到我要的结果。

 

代码如下:

'完善身份证号码
If e.DataCol.Name = "身份证号码" Then
    For Each r As DataRow In DataTables("储蓄积分").DataRows
        If r("身份证号码").Length = 18
            Dim dr As DataRow = DataTables("储蓄积分").Find("客户名称 = '" & r("客户名称") & "' and 身份证号码 = '" & r("身份证号码").SubString(0,15) & "'")
            If dr IsNot Nothing Then '如果找到的话
                dr("身份证号码") = r("身份证号码")
            End If
        End If
    Next
End If

'计算储蓄积分
If e.DataCol.Name = "日均余额" Then
    If e.DataRow.IsNull(e.DataCol) = False Then
        Select Case e.DataRow(e.DataCol)
            Case 0.00 To 50000.00
                e.DataRow("储蓄积分") = 50
            Case 50000.000001 To 100000.00
                e.DataRow("储蓄积分") = 100
            Case 100000.000001 To 200000.00
                e.DataRow("储蓄积分") = 150
            Case 200000.000001 To 300000.00
                e.DataRow("储蓄积分") = 180
            Case 300000.000001 To 400000.00
                e.DataRow("储蓄积分") = 220
            Case 400000.000001 To 500000.00
                e.DataRow("储蓄积分") = 280
            Case 500000.000001 To 800000.00
                e.DataRow("储蓄积分") = 300
            Case 800000.000001 To 1000000.00
                e.DataRow("储蓄积分") = 350
            Case 1000000.00 To 2000000.00
                e.DataRow("储蓄积分") = 400
            Case 2000000.00 To 5000000.00
                e.DataRow("储蓄积分") = 500
            Case 5000000.00 To 50000000.00
                e.DataRow("储蓄积分") = 600
        End Select
    Else
        e.DataRow("储蓄积分") = Nothing
    End If
Else
    If e.DataCol.Name = "储蓄积分" Then
        DataTables("客户资料").DataCols("客户名称").RaiseDataColChanged(" 客户名称 = '" & e.DataRow("客户名称") & "' and  身份证号码 = '" & e.DataRow("身份证号码") & "'  ")
    End If
End If

 

''在客户资料中加入没有的客户
Select Case e.DataCol.name
    Case  "身份证号码","客户名称"
        If e.DataRow.Isnull("身份证号码")=False Then
            Dim dr As DataRow = DataTables("客户资料").Find(" 客户名称 ='" & e.DataRow("客户名称") & "'  and   身份证号码 ='" & e.DataRow("身份证号码") & "'")
            If dr Is Nothing Then
                dr = DataTables("客户资料").addnew
                dr("客户名称")=e.DataRow("客户名称")
                dr("身份证号码")=e.DataRow("身份证号码")
               
            End If
        End If
End  Select

 

 

 


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