以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]交叉查询  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=28813)

--  作者:ruanziming
--  发布时间:2013/2/19 17:14:00
--  [求助]交叉查询
求教lin老师一个问题:下表的3-4行是在交叉查询的时候出现的。我其实想要的是最后一行的格式。A列是水平分组列,是商品名称,垂直分组列是客户名称。统计列是数量,但是这个数量会有不同的计量单位。我采用了&的方式获得了4斤、3个,但是它不能放在统计列,它会计数而不是显示。求教老师有什么办法解决?
    单位    a  b    c  d   e           
 A     个      2      6            
 A   斤   4      3     5         
                              
 A     4斤    2个   3斤   6个   5斤         

--  作者:lin_hailun
--  发布时间:2013/2/19 18:05:00
--  
 这种的话,你可以减少 单位 分组进行一次交叉统计,统计结束以后对统计表进行处理,加入单位列,修改对应值。

 你上传数据表吧。

--  作者:ruanziming
--  发布时间:2013/2/20 14:06:00
--  
要处理的表是“销售订单汇总总表”,水平分组列为“原料名称”,垂直分组列为“单位简称”,统计列为“订单数量”&“订单单位”(或者“订单数量带单位”)


谢谢老师
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.rar


--  作者:lin_hailun
--  发布时间:2013/2/20 14:25:00
--  
有一个问题。

如果同一个原料编码,不同的单位,单位简称都有数据,你怎么处理?

例如


 单位    a  b    c  d   e           
 A     个      2      6            
 A   斤   4   4   3   6  5


--  作者:ruanziming
--  发布时间:2013/2/20 14:28:00
--  
不会有这种情况。A列是商品名称列,abcd是客户。客户和商品都不会有重复。


--  作者:ruanziming
--  发布时间:2013/2/20 14:32:00
--  
重复的情况就再次合并,4斤+2个。偶尔也有这种情况。
--  作者:lin_hailun
--  发布时间:2013/2/20 15:07:00
--  
 做一个按钮,把这段代码执行一下就行了。

Dim dt As DataTable = DataTables("销售订单汇总总表")

Dim dtb As New DataTableBuilder("分货表")
dtb.AddDef("原料编码", Gettype(String), 32)
For Each col As String In dt.GetUniqueValues("", "单位简称")
    dtb.AddDef(col, Gettype(String), 8)
Next
dtb.Build()

Dim t As Table = Tables("分货表")
For Each ylbm As String In dt.GetUniqueValues("", "原料编码")
    Dim r As Row = t.AddNew
    r("原料编码") = ylbm
    For i As Integer = 1 To t.Cols.Count - 1
        Dim colName As String = t.Cols(i).Name
        Dim filter As String = "原料编码 = \'" & r("原料编码") & "\' And 单位简称 = \'" & colName & "\'"
        Dim data As String = ""
        For Each dw As String In dt.GetUniqueValues(filter, "订单单位")
            data &= dt.Compute("Sum(订单数量)", filter & " And 订单单位 = \'" & dw & "\'") & dw & "+"
        Next
        r(colName) = data.Trim("+")
    Next
Next

MainTable = t

--  作者:ruanziming
--  发布时间:2013/2/20 15:10:00
--  
谢谢lin老师。


--  作者:ruanziming
--  发布时间:2013/2/20 15:19:00
--  
请老师给个按钮的链接,我学一下。
--  作者:lin_hailun
--  发布时间:2013/2/20 15:40:00
--  
以下是引用ruanziming在2013-2-20 15:19:00的发言:
请老师给个按钮的链接,我学一下。


你直接设计一个窗口,或者设计一个菜单就行了。

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