以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  二数据表之间数据对比  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=21757)

--  作者:aygp
--  发布时间:2012/7/23 23:26:00
--  二数据表之间数据对比
请教:有二个数据表“学生名单1”,“学生名单2”,要对姓名列中的名字相互进行对比,在对方表中不存在的名单用红色显示,并在对比结果列中显示“无此人”。这样的事情用人工去对比太痛苦了。见附表
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数据对比.rar


--  作者:aygp
--  发布时间:2012/7/23 23:29:00
--  
请教按钮代码如何编写?
--  作者:y2287958
--  发布时间:2012/7/24 6:48:00
--  
Dim lst1 As New List(of DataRow)
Dim lst2 As New List(of DataRow)
For Each dr As DataRow In DataTables("学生名单1").DataRows
    If DataTables("学生名单2").Find("姓名 = \'" & dr("姓名") & "\'") Is Nothing Then
        lst1.Add(dr)
    Else
        lst2.Add(dr)
    End If
Next
For Each dr As DataRow In lst1 
    dr("对比结果") = "无此人"
Next
For Each dr As DataRow In lst2
    dr("对比结果") = ""
Next
For Each dr As DataRow In DataTables("学生名单2").DataRows
    If DataTables("学生名单1").Find("姓名 = \'" & dr("姓名") & "\'") Is Nothing Then
        lst1.Add(dr)
    Else
        lst2.Add(dr)
    End If
Next
For Each dr As DataRow In lst1 
    dr("对比结果") = "无此人"
Next
For Each dr As DataRow In lst2
    dr("对比结果") = ""
Next

或者

For Each dr As DataRow In DataTables("学生名单1").DataRows
    If DataTables("学生名单2").Find("姓名 = \'" & dr("姓名") & "\'") Is Nothing Then
        dr("对比结果") = "无此人"
    Else
        dr("对比结果") = ""
    End If
Next
For Each dr As DataRow In DataTables("学生名单2").DataRows
    If DataTables("学生名单1").Find("姓名 = \'" & dr("姓名") & "\'") Is Nothing Then
        dr("对比结果") = "无此人"
    Else
        dr("对比结果") = ""
    End If
Next


两者效率不同

另外还要表draw事件中设一下“红色显示”

--  作者:aygp
--  发布时间:2012/7/24 9:29:00
--  
谢了!