以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]为什么多条件筛选删除代码中的筛选不起作用?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131826)

--  作者:tkxffb
--  发布时间:2019/3/7 10:36:00
--  [求助]为什么多条件筛选删除代码中的筛选不起作用?
各位老师好,我想通过下面的代码筛选出身份证号和职务都相同的行并删除,可是在实际执行时,只要身份证号相同而职务不同的行也删除了,请问代码哪里有问题?

Dim i As Integer
For i = DataTables("工作经历信息表").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("工作经历信息表").DataRows(i)
    Dim dr2 As DataRow = DataTables("工作经历信息表").Find("身份证号=\'" & dr("身份证号") & "\' and 职务=\'" & dr("职务") & "\' ")
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next

--  作者:有点甜
--  发布时间:2019/3/7 11:01:00
--  
Dim i As Integer
For i = DataTables("工作经历信息表").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("工作经历信息表").DataRows(i)
    Dim count = DataTables("工作经历信息表").compute("count(身份证号)", "身份证号=\'" & dr("身份证号") & "\' and 职务=\'" & dr("职务") & "\'")
    If count > 1 Then
        dr.Delete
    End If
Next

--  作者:tkxffb
--  发布时间:2019/3/7 11:47:00
--  
有点甜老师,你修改之后的代码,当工作经历信息表窗口的主表时可用,如果窗口主表是别的表,代码就不能用,有什么办法解决这个问题吗?

详细情况:
项目的主窗口是人员信息窗口,主表是人员信息表,在主窗口有个人员信息批量导入窗口,为了防止多次导入造成行的重复,我在导入窗口关闭事件中写了人员信息表删除重复的代码,同时也写了工作经历信息表删除重复的代码(就是上面请你修改的代码)

--  作者:有点甜
--  发布时间:2019/3/7 11:56:00
--  
Dim i As Integer
Dim t As Table = Forms("窗口1").controls("table1").Table
For i = t.Rows.Count-1 To 0 Step -1
    Dim dr As Row = t.Rows(i)
    Dim count = t.compute("count(身份证号)", "身份证号=\'" & dr("身份证号") & "\' and 职务=\'" & dr("职务") & "\'")
    If count > 1 Then
        dr.Delete
    End If
Next

--  作者:tkxffb
--  发布时间:2019/3/7 12:31:00
--  
甜老师,可能求助的人太多,你很忙,没顾得仔细看我上面的求助内容,也可能我说的不够详细,不容易看明白,造成刚才给出的代码不能用,抱歉。
导入时打开的是人员信息窗口,主表是人员信息表,而不是人员经历信息表。人员信息导入到人员信息表后,同时把有关的列复制到了人员经历信息表,也就是说,重复导入会使人员信息表和人员经历表都造成行的重复。现在的目的是,在主窗口为人员信息窗口(不是人员经历窗口)窗口主表为人员信息表时,在当前窗口从人员经历信息表筛选并删除身份证号和职务重复的人员。
如果忙的话,请你抽空再改。午安。
[此贴子已经被作者于2019/3/7 12:39:31编辑过]

--  作者:tkxffb
--  发布时间:2019/3/7 14:30:00
--  
甜老师,上面的两段代码都能用,刚才是我把代码位置放颠倒了。
--  作者:有点甜
--  发布时间:2019/3/7 14:38:00
--  

 

如果还有问题,请上传具体实例测试。