以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于统计列的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=78302)

--  作者:lgj716330
--  发布时间:2015/12/6 20:05:00
--  关于统计列的问题
Dim t As Table = Tables("订单")
Dim
 g As SubtotalGroup
t.SubtotalGroups.Clear()

\'定义客户分组

g = New 
SubtotalGroup \'定义一个新的分组
g.Aggregate = AggregateEnum.Sum 
\'统计类型为求和
g.GroupOn = 
"客户" \'分组列为客户
g.TotalOn = 
"数量,金额" \'统计数量和金额列
g.Caption = 
"{0} 小计" \'设置标题
t.SubtotalGroups.Add(g) 
\'加到分组集合中

g.TotalOn = "数量,金额",如果这里的列的数量很多,而且不是固定的,没法直接指定,该如何表示呢

--  作者:lgj716330
--  发布时间:2015/12/6 20:16:00
--  
就是希望通过窗口筛选查询后,结果仍能保持汇总模式,列少的话指定列可以弄,列多且不固定的时候就不知道怎么弄了
图片点击可在新窗口打开查看此主题相关图片如下:11.jpg
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2015/12/6 21:58:00
--  

Dim cs As String = ""
For Each c As Col In Tables("订单").cols
    If c.Visible AndAlso c.IsNumeric Then
        cs &= c.name & ","
    End If
Next
g.TotalOn = cs.trim(",")


--  作者:lgj716330
--  发布时间:2015/12/6 22:45:00
--  
OK,搞定了,谢谢大红袍。今天又解决了两个大问题
这个代码还不是很明白,再好好消化一下

--  作者:lgj716330
--  发布时间:2015/12/7 11:34:00
--  
今天又碰到一个问题,如图所示,交叉统计的时候,”科目名称”作为垂直分组列,“借方发生”为统计列,我增加了一个表达式列“利润”,利润=主营业务收入-主营业务成本-销售费用-财务费用+营业外收入,但代码里的列名是用“借方发生_5”这样的形式表示的,但当我新增一个科目的时候,发现原来的“借方发生_5”变成了“借方发生_4”或其他,利润的计算结果就出错了,如何获取固定的列名呢
图片点击可在新窗口打开查看此主题相关图片如下:123.jpg
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2015/12/7 11:44:00
--  

循环每一列,把标题和列名存储在字典里,然后引用

 

Dim dic As new Dictionary(of String, String)
For Each c As Col  In Tables("表A").cols
    dic.add(c.Caption, c.name)
Next

msgbox(dic("第五列"))


--  作者:lgj716330
--  发布时间:2015/12/7 11:50:00
--  
好,先研究一下
--  作者:lgj716330
--  发布时间:2015/12/7 22:23:00
--  
以下是引用大红袍在2015/12/7 11:44:00的发言:

循环每一列,把标题和列名存储在字典里,然后引用

 

Dim dic As new Dictionary(of String, String)
For Each c As Col  In Tables("表A").cols
    dic.add(c.Caption, c.name)
Next

msgbox(dic("第五列"))


不好意思,可能是我不知如何引用,发现通过上述代码处理后引用列名,我的原表数据改变后,统计表的列名还是会变


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

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


--  作者:大红袍
--  发布时间:2015/12/7 22:27:00
--  

哪里需要某列的列名,就直接写

 

dic("标题名")


--  作者:lgj716330
--  发布时间:2015/12/8 9:54:00
--  
以下是引用大红袍在2015/12/7 22:27:00的发言:

哪里需要某列的列名,就直接写

 

dic("标题名")


偿试了各种方法,总是有错误提示,有点晕了

[此贴子已经被作者于2015/12/8 10:05:40编辑过]