以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何筛选出统计表1的前10行?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=121943)

--  作者:Zhao2006
--  发布时间:2018/7/16 11:26:00
--  如何筛选出统计表1的前10行?
甜老师好!为了画图表,
图片点击可在新窗口打开查看此主题相关图片如下:订单表.jpg
图片点击可在新窗口打开查看
用临时表对订单表进行了“统计表1”,问题:如何只筛选出金额排序前10行的统计表1?

已完成了的部分代码
Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Groups.AddDef("产品") \'添加客户列用于分组
b.Totals.AddDef("金额") \'添加数量列用于统计
b.Totals.AddDef("数量") \'添加数量列用于统计
\'b.VerticalTotal = True \'自动垂直汇总
b.Build \'生成统计表 
Tables("统计表1").Sort = "金额 DESC"
(如何筛选出金额较大的前10行?)

MainTable = Tables("统计表1") \'打开生成的统计表
[此贴子已经被作者于2018/7/16 11:29:21编辑过]

--  作者:有点甜
--  发布时间:2018/7/16 12:00:00
--  
Dim n As Integer = 10
Dim t As Table = Tables("表A")
Dim idxs As String = "\'\',"
n = iif(t.Rows.count>n, n, t.Rows.count)
For i As Integer = 0 To n-1
    idxs &= "\'" & t.rows(i)("第一列") & "\',"
Next
t.filter = "第一列 in (" & idxs.trim(",") & ")"

--  作者:Zhao2006
--  发布时间:2018/7/16 16:20:00
--  
甜老师好,命令窗口试运行显示:无法在 System.Double 和 System.String 上执行“=”操作。
还需转换个什么类型的吧。

--  作者:y2287958
--  发布时间:2018/7/16 16:49:00
--  
只能如此了
Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Groups.AddDef("产品") \'添加客户列用于分组
b.Totals.AddDef("金额") \'添加数量列用于统计
b.Totals.AddDef("数量") \'添加数量列用于统计
\'b.VerticalTotal = True \'自动垂直汇总
b.Build \'生成统计表 
Tables("统计表1").Sort = "金额 DESC"
Tables("统计表1").Select(0,0,9,0)
Tables("统计表1").HideUnSelectedRows
MainTable = Tables("统计表1") \'打开生成的统计表


--  作者:有点甜
--  发布时间:2018/7/16 16:49:00
--  

1、贴出你所写代码

 

2、你的产品列不是字符串?


--  作者:Zhao2006
--  发布时间:2018/7/16 17:07:00
--  
Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Groups.AddDef("产品") \'添加客户列用于分组
b.Totals.AddDef("金额") \'添加数量列用于统计
b.Totals.AddDef("数量") \'添加数量列用于统计
\'b.VerticalTotal = True \'自动垂直汇总
b.Build \'生成统计表 
Tables("统计表1").Sort = "金额 DESC"
Dim n As Integer = 10
Dim t As Table = Tables("统计表1")
Dim idxs As String = "\'\',"
n = iif(t.Rows.count>n, n, t.Rows.count)
For i As Integer = 0 To n-1
    idxs &= "\'" & t.rows(i)("金额") & "\',"
Next
t.filter = "金额 in (" & idxs.trim(",") & ")"
MainTable = Tables("统计表1") \'打开生成的统计表

--  作者:Zhao2006
--  发布时间:2018/7/16 17:11:00
--  
嗯,这位同学的代码能够实现,真神。
--  作者:Zhao2006
--  发布时间:2018/7/16 17:14:00
--  
帅哥,在线噢!
谢谢y2287958,

--  作者:有点甜
--  发布时间:2018/7/16 18:03:00
--  

把金额列,改成产品列

 

Dim t As Table = Tables("统计表1")
Dim idxs As String = "\'\',"
n = iif(t.Rows.count>n, n, t.Rows.count)
For i As Integer = 0 To n-1
    idxs &= "\'" & t.rows(i)("产品") & "\',"
Next
t.filter = "产品 in (" & idxs.trim(",") & ")"
MainTable = Tables("统计表1") \'打开生成的统计表

--  作者:Zhao2006
--  发布时间:2018/7/16 18:32:00
--  
嗯!嗯!!这个正确出表了,谢谢甜老师。