以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何实现交叉查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=21463)

--  作者:idoicand
--  发布时间:2012/7/13 9:07:00
--  [求助]如何实现交叉查询

菜鸟提问:

我有一串数据,姓名,期间,成本中心,如何实现一个交叉表格行按姓名分组,列按期间分组,内容显示这个人在不同期间对应的成本中心?通过什么来实现?查询表,EXCEL报表还是编代码?


--  作者:狐狸爸爸
--  发布时间:2012/7/13 9:16:00
--  

交叉统计很简单,不用写代码的,从这一节开始看:
http://www.foxtable.com/help/topics/0165.htm


喜欢写代码的:
http://www.foxtable.com/help/topics/0678.htm


 


--  作者:idoicand
--  发布时间:2012/7/13 9:20:00
--  
请注意不是统计,我是要取数,成本中心是一段文本,公司员工可能在不同成本中心间调动,我要看他们一年中不同期间分属哪个成本中心。
--  作者:狐狸爸爸
--  发布时间:2012/7/13 9:23:00
--  

交叉统计一样可以取数。

你先看看吧,如果搞不定,你可以做个例子传上来,然后说明问题,方便大家理解。


--  作者:idoicand
--  发布时间:2012/7/13 9:27:00
--  

我用交叉统计,对于文本它就只能显示记录数,不能显示记录本身呀?


--  作者:idoicand
--  发布时间:2012/7/13 10:34:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:交叉表.jpg
图片点击可在新窗口打开查看


--  作者:idoicand
--  发布时间:2012/7/13 10:35:00
--  
上面是我做的例子,左边是数据,右边是想要的报表,谢谢帮助!
--  作者:idoicand
--  发布时间:2012/7/13 10:37:00
--  
又做了一个foxtable的样子,见附件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:交叉查询.table


--  作者:狐狸爸爸
--  发布时间:2012/7/13 10:58:00
--  

在命令窗口执行:

 

Dim dtb As New DataTableBuilder("表D")
dtb.AddDef("姓名", Gettype(String), 32)
For Each v As String In DataTables("表A").GetUniqueValues("","期间")
    dtb.AddDef(v, Gettype(String))
Next
dtb.Build()
For Each v As String In DataTables("表A").GetUniqueValues("","姓名")
    Dim dr1 As DataRow = DataTables("表D").AddNew()
    dr1("姓名") = v
    For Each dr2 As DataRow In DataTables("表A").DataRows
        If dr2("姓名") = v Then
            dr1(dr2("期间")) = dr2("成本中心")
        End If
    Next
Next
MainTable = Tables("表D")

 

就可以得到你要的表


--  作者:idoicand
--  发布时间:2012/7/13 11:03:00
--  
没有成功,是不是因为我这个不是一一对应的,比如张三没有1201和1202的数据?但实际情况是这样的,有的人刚来,有的人离职走了。