Foxtable(狐表)用户栏目专家坐堂 → 请教:交叉统计,


  共有2890人关注过本帖树形打印复制链接

主题:请教:交叉统计,

帅哥哟,离线,有人找我吗?
yancheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
请教:交叉统计,  发帖心情 Post By:2015/11/27 12:24:00 [只看该作者]

Dim bd1 As New SQLCrossTableBuilder("统计表1","采购进货")
bd1.C
Dim dt1 As fxDataSource
bd1.HGroups.AddDef("定额编码")
bd1.VGroups.AddDef("合同名称")
bd1.Totals.AddDef("进货数量","进货_数量") '对数量进行统计
bd1.Totals.AddDef("进货合计","进货_金额") '对金额进行统计
dt1 = bd1.BuildDataSource()

Dim bd2 As New SQLCrossTableBuilder("统计表2","销售明细")
bd2.C
Dim dt2  As fxDataSource
bd2.HGroups.AddDef("定额编码") '根据定额编码分组
bd2.VGroups.AddDef("合同名称") '对数量进行统计
bd2.Totals.AddDef("销售数量","销售_数量") '对数量进行统计
bd2.Totals.AddDef("销售合计","销售_金额") '对金额进行统计
dt2 = bd2.BuildDataSource()
'
'Dim bd3 As New SQLCrossTableBuilder("统计表3","退货单")
'bd3.C
'Dim dt3 As fxDataSource
'bd3.Groups.AddDef("定额编码") '根据定额编码分组
'bd3.Totals.AddDef("数量","退货_数量") '对数量进行统计
'bd3.Totals.AddDef("金额","退货_金额") '对金额进行统计
'dt3 = bd3.BuildDataSource()

Dim nms As String() = {"定额编码"} '指定连接列
dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据
'dt1.Combine("定额编码",dt3,"定额编码") '将退货统计数据组合到进货统计数据

Tables("库存数量表_Table1").DataSource = dt1 '将统计结果绑定到Table
With DataTables("库存数量表_Table1").DataCols  '用表达式列计算库存数据

    .Add("库存_数量",Gettype(Integer), "IsNull([进货_数量],0) - ISNULL([销售_数量],0)")
    .Add("库存_金额",Gettype(Double), "[库存_数量]  * [进货_金额]")
End With


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

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

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

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

 

目标问题:

1、弹出说:找不到:进货_数量,进货金额:列?

2、同一个工程,的进货与销售,不在同一个列组里面?(我需要的结构是:同一:合同名称,下的:进货、销售、库存。合同名称_进货\销售\库存_数量\金额;

3、行里面,需要除了显示:定额编码外,还需要显示:材料名称,型号等信息。

[此贴子已经被作者于2015/11/27 12:28:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/27 12:33:00 [只看该作者]

上传项目测试。

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/11/27 13:00:00 [只看该作者]

 

[此贴子已经被作者于2015/11/27 21:20:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/11/27 13:06:00 [只看该作者]

已上传实例

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/11/27 14:32:00 [只看该作者]

已上传实例,麻烦老师了。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/27 15:46:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/11/27 16:21:00 [只看该作者]

老师,我放把代码放进去了。大概是这个意思,但还有两个问题:(现在没有:库存数量)

1、库存,我是需要,每个合同都要看库存?(每个合同,就是一个:仓库)

2、库存数量=进货数量-销售数量。


图片点击可在新窗口打开查看此主题相关图片如下:77.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2015/11/27 16:22:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/11/27 16:44:00 [只看该作者]

Dim sql As String = "sele ct a.定额编码 as 定额编码, 合同名称, a.数量 as 数量, 合计, 类型, b.* from (selec t 定额编码, 合同名称, 进货数量 as 数量, 进货合计 as 合计, '进货' as 类型 from {采购进货} union all se lect 定额编码, 合同名称, 销售数量, 销售合计, '销售' from {销售明细}) as a left join {材料} as b on a.定额编码 = b.定额编码"
这个代码,在帮助哪里有呢?

看不懂。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/27 17:28:00 [只看该作者]

mark 交叉统计

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文本文档.txt


 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/11/29 19:26:00 [只看该作者]

Dim sql As String = "sele ct a.定额编码 as 定额编码, 合同名称, a.数量 as 数量, 合计, 类型, b.* from (sel ect 定额编码, 合同名称, 进货数量 as 数量, 进货合计 as 合计, '进货' as 类型 from {采购进货} union all s elect 定额编码, 合同名称, 销售数量, 销售合计, '销售' from {销售明细} union all sel ect 定额编码, 合同名称, 0, 0, '进货' from {销售明细} union all sele ct 定额编码, 合同名称, 0, 0, '销售' from {采购进货}) as a left join {材料} as b on a.定额编码 = b.定额编码"

Dim g As New CrossTableBuilder("统计表1",sql, "服务器")
g.HGroups.AddDef("定额编码")
g.HGroups.AddDef("材料名称")
g.HGroups.AddDef("单位")
g.VGroups.AddDef("合同名称")
g.VGroups.AddDef("类型")
g.Totals.AddDef("数量","数量") '对数量进行统计
g.Totals.AddDef("合计","金额") '对金额进行统计

Tables("库存数量表_Table1").DataSource = g.BuildDataSource

Dim t As Table = Tables("库存数量表_Table1")
Dim pht As String = ""
For i As Integer = t.Cols.Count - 1 To 0 Step -1
    If t.Cols(i).caption Like "*_销售_*" OrElse t.Cols(i).caption Like "*_进货_*" Then
        Dim ht As String = t.Cols(i).caption.Split("_")(0)
        If pht = Nothing OrElse ht <> pht Then
            t.DataTable.DataCols.Add(ht & "_库存_数量",Gettype(Integer), "isnull(" & t.cols(i-3).name & ",0) - isnull(" & t.Cols(i-1).name & ",0)")
            t.DataTable.DataCols.Add(ht & "_库存_金额",Gettype(Double), "isnull(" & t.cols(i-2).name & ",0) - isnull(" & t.Cols(i).name & ",0)")
            t.Cols(ht & "_库存_金额").Move(i+1)
            t.Cols(ht & "_库存_数量").Move(i+1)
            pht = ht
        End If
    End If
Next

上面代码看不懂:请教一下老师:
1、sele ct a.定额编码 as 定额编码  ;这个:a.   是什么意思?
2、union all sel ect 定额编码, 合同名称, 0, 0,  ;这个0, 0, 是什么意思?
3、Dim g As New CrossTableBuilder("统计表1",sql, "服务器")  这个sql是怎么意思?
[此贴子已经被作者于2015/11/29 19:28:04编辑过]

 回到顶部
总数 15 1 2 下一页