Foxtable(狐表)用户栏目专家坐堂 → 交叉统计的垂直自动汇总合计行 不是在最后一行


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

主题:交叉统计的垂直自动汇总合计行 不是在最后一行

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
交叉统计的垂直自动汇总合计行 不是在最后一行  发帖心情 Post By:2017/11/2 16:02:00 [只看该作者]

甜老师,交叉统计的垂直自动汇总合计行 因为是两个统计表关联,然后就没有在最后一行,要怎么弄呢。。。
Dim b1 As New sqlCrossTableBuilder("统计表1","biaoA")
Dim dt1 As fxDataSource
b1.hGroups.AddDef("店仓ID")
b1.hGroups.AddDef("商品款号")
b1.hGroups.AddDef("店仓名称","销售数量_店仓名称")
b1.vGroups.AddDef("尺码", "销售数量_{0}")
b1.Totals.AddDef("销售数量"  ) '根据产品分组
b1.filter =  filter & " and 商品款号 = '" & e.Form.Controls("table1").Table.current("商品款号") & "'"
b1.HorizontalTotal = True
b1.VerticalTotal = True
b1.CommandTimeOut = 600
dt1 = b1.BuildDataSource()

Dim b2 As New SQLcrossTableBuilder("统计表2","biaoB")
Dim dt2 As fxDataSource
b2.hGroups.AddDef("店仓ID")
b2.hGroups.AddDef("商品款号")
b2.hGroups.AddDef("店仓名称","可用库存_店仓名称")
b2.vGroups.AddDef("尺码", "可用库存_{0}")
b2.Totals.AddDef("可用库存")  '根据产品分组
b2.filter = "商品款号 = '" & e.Form.Controls("table1").Table.current("商品款号") & "'"
b2.HorizontalTotal = True
b2.VerticalTotal = True
b2.CommandTimeOut = 600
dt2 = b2.BuildDataSource()

Dim nms As String() = {"商品款号","店仓ID"} '指定连接列

dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据

e.Form.Controls("table2").Table.DataSource = dt1


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171102160035.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2017/11/2 16:03:19编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/2 16:10:00 [只看该作者]

 

你可以在生成表格以后,自己加入一行,然后合计所有列的数据。


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/2 16:18:00 [只看该作者]

恩恩,甜老师,因为要统计的列是根据销售数据来,是变动的
所以也不知道哪些列有。

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171102162136.png
图片点击可在新窗口打开查看

另外,像这种统计表,怎么再另外增加一行呢。。。
增加列我知道,增加行还不知道


[此贴子已经被作者于2017/11/2 16:20:35编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/2 16:28:00 [只看该作者]

循环不就可以了?

 

Dim t As Table = Tables("表A")
Dim nr As Row = t.AddNew
nr("第一列") = "合计"
For Each c As Col In t.cols
    If c.IsNumeric Then
        nr(c) = t.Compute("sum(" & c.name & ")")
    End If
Next


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/2 16:32:00 [只看该作者]

哦哦,谢谢甜老师!!!

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/2 18:35:00 [只看该作者]

甜老师,
我想让合计行放在第一行,能有办法吗?

这种统计表不支持移动行,所以用 move(0) 不行

我尝试把
Dim t As Table = Tables("表A")
Dim nr As Row = t.AddNew
放在统计的前面,会报错说没有哪一列。
因为后面有用到 
For Each dr As DataRow In e.Form.Controls("table2").Table.DataTable.DataRows
    dr("销量占比") = dr("合计_销售数量") / nr("合计_销售数量")
Next
[此贴子已经被作者于2017/11/2 18:37:02编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/2 19:40:00 [只看该作者]

插入一列_Sortkey列,如

 

Dim t As Table = Tables("统计表1")
t.DataTable.datacols.Add("_Sortkey", Gettype(Double))
t.sort = "_sortkey"
t.sort = ""
t.DataTable.ReplaceFor("_sortkey",  3)
Dim nr As Row = t.AddNew
nr.move(0)


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/2 20:15:00 [只看该作者]

厉害了,甜老师!!

 回到顶部