Foxtable(狐表)用户栏目专家坐堂 → [求助]新人请教是否可以关于指定行的求和统计


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

主题:[求助]新人请教是否可以关于指定行的求和统计

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/25 9:50:00 [显示全部帖子]

 你这种,需要使用代码分别进行计算的,参考 http://www.foxtable.com/webhelp/scr/0681.htm

 

 不会做的话,上传具体实例。

 

 


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/25 11:04:00 [显示全部帖子]

参考代码

 


Dim dt As DataTable = DataTables("年度预算制定")
Dim g As New GroupTableBuilder("统计表1", dt)
g.Groups.AddDef("一级科目")
g.Groups.AddDef("二级科目")
g.Totals.AddDef("金额")
g.Totals.AddDef("业务开发部", AggregateEnum.Count)
g.Totals.AddDef("运营管理部")
g.Build()
Dim t As Table = Tables("统计表1")
With t
    .MergeMode = MergeModeEnum.Standard
    .MergeCols.Clear()
    .MergeCols.Add("一级科目")
    .MergeCols.Add("二级科目")
    .MergeSort = "一级科目,二级科目"
    .AllowMerge = True
End With
Dim nr1 As Row = t.AddNew
nr1("一级科目") = "总收入"
Dim nr2 As Row = t.AddNew
nr2("一级科目") = "总支出"
Dim nr3 As Row = t.AddNew
nr3("一级科目") = "利润"
Dim nr4 As Row = t.AddNew
nr4("一级科目") = "奖金后利润"
Dim cs() As String = {"金额", "业务开发部", "运营管理部"}
For Each c As String In cs
    nr1(c) = dt.Compute("sum(" & c & ")", "类别='收入'")
    nr2(c) = dt.Compute("sum(" & c & ")", "类别='支出'")
    nr3(c) = nr1(c) - nr2(c)
    nr4(c) = nr3(c) - dt.Compute("sum(" & c & ")", "二级科目='年终奖'")
Next

MainTable = Tables("统计表1")


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/25 11:51:00 [显示全部帖子]

参考代码

 

Dim dt As DataTable = DataTables("年度预算制定")

Dim t As Table = Tables("年度预算制定")
With t
    .MergeMode = MergeModeEnum.Standard
    .MergeCols.Clear()
    .MergeCols.Add("类别")
    .MergeCols.Add("一级科目")
    .MergeCols.Add("二级科目")
    .MergeSort = "一级科目,二级科目"
    .AllowMerge = True
End With
Dim filter As String = "一级科目 In ('总收入', '总支出', '利润', '奖金后利润')"
dt.DeleteFor(filter)
filter = "一级科目 not In ('总收入', '总支出', '利润', '奖金后利润')"
Dim nr1 As Row = t.AddNew
nr1("一级科目") = "总收入"
Dim nr2 As Row = t.AddNew
nr2("一级科目") = "总支出"
Dim nr3 As Row = t.AddNew
nr3("一级科目") = "利润"
Dim nr4 As Row = t.AddNew
nr4("一级科目") = "奖金后利润"
Dim cs() As String = {"业务开发部", "运营管理部"}
For Each c As String In cs
    nr1(c) = dt.Compute("sum(" & c & ")", "类别='收入' and " & filter)
    nr2(c) = dt.Compute("sum(" & c & ")", "类别='支出' and " & filter)
    nr3(c) = nr1(c) - nr2(c)
    nr4(c) = nr3(c) - dt.Compute("sum(" & c & ")", "二级科目='年终奖' and " & filter)
Next


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/25 14:40:00 [显示全部帖子]

那你命名的时候,要有规律,比如 xx_销售一部 xx_销售二部,那么就直接去开头是xx_的列

 

Dim cs As new List(Of String)
For Each c As Col In t.cols
    If c.Name.StartsWith("xx_") Then
        cs.add(c.name)
    End If
Next


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/25 15:39:00 [显示全部帖子]

认真看10楼。

 

Dim cs As new List(Of String)


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/26 10:57:00 [显示全部帖子]

以下是引用甜甜大香蕉在2017/4/26 9:51:00的发言:
老师:昨天问题已解决,谢谢!
但今天发现:1.每次打开项目这个表的数据就清空了,2.这是用foxtable的内置表格制作实现了效果,但如果用外部sql数据库的话是不是就无法实现了?

 

你设计表的思路有点问题。表是用来存放数据的,你需要统计功能的话,应该单独生成一个表进行统计和显示,而不应该在原表那里操作,这样会影响原表的数据的录入。


 回到顶部