以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求一对比小程序  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=20651)

--  作者:yjk1023
--  发布时间:2012/6/14 22:13:00
--  求一对比小程序

有字段结构都一样的2个表 表A和表B,要求求出表a有表b没有的人员、2个表都有的人员和表b有表a没有的人员

[此贴子已经被作者于2012-6-14 22:13:48编辑过]

--  作者:程兴刚
--  发布时间:2012/6/14 22:51:00
--  

发示例文件,难得费口舌!


--  作者:ksyh518
--  发布时间:2012/6/14 23:56:00
--  回复:(yjk1023)求一对比小程序
 

 

Dim alst As List(of String) = DataTables("表A").getuniquevalues("","人员")  ‘获取表A人员集合

Dim blst As List(of String) = DataTables("表B").getuniquevalues("","人员")  ‘获取表B人员集合

 

Dim aybmy As new List(of String)    ’定义A有B没有人员的集合

Dim ayby As new List(of String)      ’定义A有B也有人员的集合

Dim anm,bnm As String

 

For Each anm In alst    ‘遍历表A人员集合,获得A有B没有和 A有B也有的人员集合

If blst.contains(anm) = False Then

        aybmy.add(anm)

    Else

        ayby.add(anm)

    End If

Next

 

Dim byamy As new List(of String) 

For Each bnm In blst        ‘遍历表B人员集合,获得B有A没有的人员集合

    If alst.contains(bnm) = False Then

        byamy.add(bnm)

    End If

Next

 

Dim v,v1,v2,v3 As Integer

V1=aybmy.count

V2=ayby.count

V3=byamy.count

V = Math.max(Math.max(v1,v2),v3)       ’在3个集合中,找到最大的集合数

messagebox.Show(v)

Dim dtb As new datatablebuilder("人员比较表")   \'生成一个查询表并填充人员

Dim dt As DataTable

Dtb.adddef("A有B没有",Gettype(String),16)

Dtb.adddef("A有B也有",Gettype(String),16)

Dtb.adddef("B有A没有",Gettype(String),16)

Dt = Dtb.build()

     .

     .

     .

[此贴子已经被作者于2012-6-15 8:32:32编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/6/15 8:03:00
--  

如果不想写代码,可以看看:

http://www.foxtable.com/help/topics/1479.htm

 


--  作者:yjk1023
--  发布时间:2012/6/15 9:41:00
--  

非常感谢!实验中


--  作者:yjk1023
--  发布时间:2012/6/15 10:25:00
--  
以下是引用程兴刚在2012-6-14 22:51:00的发言:

发示例文件,难得费口舌!


--  作者:yjk1023
--  发布时间:2012/6/15 10:25:00
--  
以下是引用程兴刚在2012-6-14 22:51:00的发言:

发示例文件,难得费口舌!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:人员对比.foxdb


--  作者:ksyh518
--  发布时间:2012/6/15 14:17:00
--  人员对比表-小例子

  拜托楼主一件事:以后上传,请以商业版做示例哈!!!!!!!

 

已测试,人员对比表的小例子


图片点击可在新窗口打开查看此主题相关图片如下:人员截图.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:人员对比表.table

[此贴子已经被作者于2012-6-15 15:02:31编辑过]

--  作者:don
--  发布时间:2012/6/15 15:40:00
--  
SQL法:

Dim dt1,dt2,dt3 As DataTable
Dim sql1,sql2,sql3 As String

dt1 = DataTables("窗口2_Table1")
sql1 = "SELECT 人员 as  AB都有 ,\'\' as A有B无,\'\' as A无B有  FROM {表A} WHERE 人员 IN (SELECT 人员 FROM {表B})"
sql2 = "SELECT 人员 as  A有B无  FROM {表A} WHERE 人员 Not IN (SELECT 人员 FROM {表B})"
sql3 = "SELECT 人员 as  A无B有  FROM {表B} WHERE 人员 Not IN (SELECT 人员 FROM {表A})"

Dim cmd2,cmd3 As New SQLCommand
cmd2.CommandText = sql2
dt2 = cmd2.ExecuteReader()

cmd3.CommandText = sql3
dt3 = cmd3.ExecuteReader()
dt1.Fill(sql1,"",True)

Dim f As New Filler
f.SourceTable = dt2  
f.DataTable = dt1
f.Append = False
f.Fill() \'

f = New Filler
f.SourceTable = dt3  
f.DataTable = dt1
f.Append = False
f.Fill() \'

--  作者:小猪鑫鑫
--  发布时间:2012/6/16 8:55:00
--  
学习,收藏