以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表与表之间列值对比问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30679)

--  作者:zmagood
--  发布时间:2013/4/2 0:22:00
--  表与表之间列值对比问题
A、B表中均含A列及日期列。同一天中A、B表中的A列各有多个值。
问题:A表A列的值与B表A列的值按日期条件(同一天)进行对比,找出不同的值,并在C表(比较表)中新增行把A表与B表不同值按各表的日期显示出来。求方法!
--  作者:zmagood
--  发布时间:2013/4/2 14:19:00
--  
谢谢,很不错。继续请教:
A表第一列有值:2,2,2,3,3,6
B表第一列有值:2,2,3,3,6,6
对A表B进行对比:A、B表中相同值有2、3、6(即A中2值3个,3值2个,6值1个, B中2值2个,3值2个,6值2个。 )
C表中我想实现:
A中比B多1个2,C表新增行输出1个2
A中比B一样多,C表不输出3
A中比B少1个6,C表新增行输出1个6
即:在C表中去除A、B表中相同个数的相同值,余下个数的相同值和不同值均在C表新增行显示出来。
[此贴子已经被作者于2013-4-2 14:30:57编辑过]

--  作者:zmagood
--  发布时间:2013/4/2 14:27:00
--  
狐爸解决一下
--  作者:XYT
--  发布时间:2013/4/2 14:43:00
--  
思路就是先得到数的个数,判断是否相等,如果不是就输出这个数
--  作者:zmagood
--  发布时间:2013/4/2 14:55:00
--  
如何实现啊?求教!
--  作者:Bin
--  发布时间:2013/4/2 15:16:00
--  
Dim strs() As String= Tables("表A").Rows(0)("第一列").Split(",")
Dim strList As New Dictionary(of String,Integer)
For i As Integer=0 To strs.length-1
   If Not strList.ContainsKey(strs(i)) Then
      strList.Add(strs(i),0)
   End If 
Next
For i As Integer=0 To strs.length-1
    strList(strs(i))=strList(strs(i))+1
Next

Dim strs2() As String= Tables("表B").Rows(0)("第一列").Split(",")
Dim strList2 As New Dictionary(of String,Integer)
For i As Integer=0 To strs2.length-1
  If Not strList2.ContainsKey(strs2(i)) Then
      strList2.Add(strs2(i),0)
   End If 
Next
For i As Integer=0 To strs2.length-1
    strList2(strs2(i))=strList2(strs2(i))+1
Next

For Each item As String In strList.Keys
  Dim dr As Row= Tables("表C").AddNew()
  dr("第一列")=strList(item)-strList2(item)
Next
搞定
以上代码少点重复代码。可以考虑写成函数 便于维护修改 减少代码冗余。

--  作者:zmagood
--  发布时间:2013/4/2 15:16:00
--  
在线等待啊, 狐爸解决一下吧
--  作者:Bin
--  发布时间:2013/4/2 15:18:00
--  
看楼上 已经帮你写好了
--  作者:zmagood
--  发布时间:2013/4/2 15:28:00
--  
谢谢,正在测试
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:测试项目.table

可以帮我写进去吗?我是初学者,才接触一周时间!
[此贴子已经被作者于2013-4-2 16:00:35编辑过]

--  作者:zmagood
--  发布时间:2013/4/2 15:41:00
--  
可以帮我写进去吗?我是初学者,才接触一周时间!