Foxtable(狐表)用户栏目专家坐堂 → 交叉统计后的数据如果提取每行的汇总数据?


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

主题:交叉统计后的数据如果提取每行的汇总数据?

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


加好友 发短信
等级:八尾狐 帖子:1934 积分:17661 威望:0 精华:0 注册:2014/7/29 19:09:00
交叉统计后的数据如果提取每行的汇总数据?  发帖心情 Post By:2019/7/21 22:11:00 [只看该作者]


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


如上图是交叉统计的结果,现在在表的最后增加了一临时列达成,想实现用每行后后的合计数据
如果合计的出货数量 >= (订单数量+退货数量) 就表示达成
但无法用 r(合计出货数量)等来判断,
用下面的每行计算原来的数据 ,结果Sum1,Sum2,Sum3都是0
 Dim Sum1,Sum2,Sum3 As Double
    For Each r As Row In tbl.Rows
        Sum1 = 0
        Sum2 = 0
        Sum3 = 0
        Sum1 = tbl.Compute("Sum(订单数量)", "产品编码 = '" & r("产品编码") & "'")
        Sum2 = tbl.Compute("Sum(出货数量)", "产品编码 = '" & r("产品编码") & "'")
        Sum3 = tbl.Compute("Sum(退货数量)", "产品编码 = '" & r("产品编码") & "'")
        If Sum2 >= (Sum1 + Sum3) Then
            r("达成") = 1
        Else
            r("达成") = 0
        End If
    Next
这种情况应该如何获取每种产品的总的出货数量,订单数量及退货数量?

谢谢!

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


加好友 发短信
等级:八尾狐 帖子:1934 积分:17661 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/7/21 22:19:00 [只看该作者]

可以了,上面不用在绑定表中计算即可,而用查询得到的原始表来计算就行
Sum1 = dt.Compute("Sum(订单数量)", "产品编码 = '" & r("产品编码") & "'")

但有没有办法直接获取汇总后的那三个数量不判断呢?

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/21 22:56:00 [只看该作者]

For Each r As Row In tbl.Rows
    r("达成") = IIF(r("出货数量") >= r("订单数量")+r("退货数量"),1,0)
Next

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


加好友 发短信
等级:八尾狐 帖子:1934 积分:17661 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2019/7/24 20:07:00 [只看该作者]

出货数量,订单数量,退货数量这三列是汇总得到的,这样使用会出错,提示找不到列
 '---交叉汇总数据
    Dim tbl As Table = Tables(e.Form.name & "_主表")
    Dim b As New CrossTableBuilder("统计表1",dt)
    b.HGroups.AddDef("产品编码") '添加客户列用于水平分组
    b.HGroups.AddDef("品名") '添加客户列用于水平分组
    b.HGroups.AddDef("规格") '添加客户列用于水平分组
  ...
    b.Totals.AddDef("订单数量") '添加数量列用于统计
    b.Totals.AddDef("出货数量") '添加数量列用于统计
    b.Totals.AddDef("退货数量") '添加数量列用于统计
    b.HorizontalTotal = True '水平方向自动汇总
    b.VerticalTotal = True '垂直方向自动汇总

我是想问这种汇总得到的统计列如何直接引用(1楼我是通过计算重新得到这三个数量,感觉有点重复)?

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/25 8:38:00 [只看该作者]

For Each r As Row In tbl.Rows
    r("达成") = IIF(r("合计_出货数量") >= r("合计_订单数量")+r("合计_退货数量"),1,0)
Next

 回到顶部