Foxtable(狐表)用户栏目专家坐堂 → 统计当前表


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

主题:统计当前表

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


加好友 发短信
等级:二尾狐 帖子:576 积分:4737 威望:0 精华:0 注册:2014/7/3 15:28:00
统计当前表  发帖心情 Post By:2024/6/23 15:52:00 [只看该作者]

请问如下代码是统计后台表的,请问如何改为统计当前表呀:,请大师修改下,谢谢!
Dim b As New CrossTableBuilder("排产计划表",DataTables("生产进度表"))
b.HGroups.AddDef("地址")
b.HGroups.AddDef("设计师")
b.HGroups.AddDef("拆单员")
b.HGroups.AddDef("属性")
b.HGroups.AddDef("生产状态")
b.HGroups.AddDef("开料_开工日期",DateGroupEnum.none)
b.VGroups.AddDef("开料_开工日期",DateGroupEnum.Year,"{0}年")
b.VGroups.AddDef("开料_开工日期","{0}月")
b.VGroups.AddDef("开料_开工日期",DateGroupEnum.day,"{0}日")
b.Totals.AddDef("开料_数量")
b.OrderByTotal = True
b.VerticalTotal= True
b.HorizontalTotal = True
Dim t As Table = e.form.controls("Table5").Table
t.datasource = b.BuildDataSource
t.DataTable.GlobalHandler.AfterEdit = True
t.AllowEdit = True
e.form.controls("Table5").Table.AutoSizeCols(3)

t.DataTable.DataCols.Add("_sortkey", Gettype(Decimal))
t.Sort = "开料_开工日期,地址"
For Each r As Row In t.Rows
    r("_sortkey") = r.Index
Next
t.rows(t.rows.count - 1).Move(0)
t.Sort = "_sortkey"
t.DataTable.AcceptChanges
t.ResumeRedraw
t.Font = New Font("宋体",10.5,FontStyle.Regular)

For Each cl As Col In t.Cols  '整表居中
            cl.TextAlign = TextAlignEnum.Center
  Next
t.DefaultRowHeight = 31
t.Cols("地址").TextAlign = TextAlignEnum.Left

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


加好友 发短信
等级:超级版主 帖子:110867 积分:564285 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/23 21:05:00 [只看该作者]

所谓的【当前表】是指什么?是指已经加载的表数据?还是指table筛选后的数据?

如果是后者,加上筛选条件即可
b.HorizontalTotal = True
b.filter = Tables("生产进度表").filter
Dim t As Table = e.form.controls("Table5").Table
t.datasource = b.BuildDataSource

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


加好友 发短信
等级:二尾狐 帖子:576 积分:4737 威望:0 精华:0 注册:2014/7/3 15:28:00
  发帖心情 Post By:2024/6/24 8:11:00 [只看该作者]

谢谢,这样可以!但是这段代码的结果合计行没有到第一行,而是在第二行,请问这是怎么回事,怎样修改代码:
Dim b As New CrossTableBuilder("排产计划表",DataTables("生产进度表"))
b.HGroups.AddDef("地址")
b.HGroups.AddDef("设计师")
b.HGroups.AddDef("拆单员")
b.HGroups.AddDef("属性")
b.HGroups.AddDef("生产状态")
b.HGroups.AddDef("开料_开工日期",DateGroupEnum.none)
b.VGroups.AddDef("开料_开工日期",DateGroupEnum.Year,"{0}年")
b.VGroups.AddDef("开料_开工日期","{0}月")
b.VGroups.AddDef("开料_开工日期",DateGroupEnum.day,"{0}日")
b.Totals.AddDef("开料_数量")
b.OrderByTotal = True
b.VerticalTotal= True
b.HorizontalTotal = True
b.filter = Tables("生产进度表").filter
Dim t As Table = e.form.controls("Table5").Table
t.datasource = b.BuildDataSource
t.DataTable.GlobalHandler.AfterEdit = True
t.AllowEdit = True
e.form.controls("Table5").Table.AutoSizeCols(3)
t.DefaultRowHeight = 31
t.DataTable.DataCols.Add("_sortkey", Gettype(Decimal))
t.rows(t.rows.count - 1).Move(0)

t.rows(0)("_sortkey") = 0

Dim i As Integer = 1

For Each dr As DataRow In t.DataTable.Select("_sortkey is null","开料_开工日期,地址")

    dr("_sortkey") = i

i+=1
Next

t.Sort = "_sortkey"
t.DataTable.AcceptChanges
t.ResumeRedraw
t.Font = New Font("宋体",10.5,FontStyle.Regular)
For Each cl As Col In t.Cols  '整表居中
            cl.TextAlign = TextAlignEnum.Center
  Next
t.Cols("地址").TextAlign = TextAlignEnum.Left
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20240624081015.png
图片点击可在新窗口打开查看

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


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

下面2句代码放到最后

t.rows(t.rows.count - 1).Move(0)
t.rows(0)("_sortkey") = 0

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


加好友 发短信
等级:二尾狐 帖子:576 积分:4737 威望:0 精华:0 注册:2014/7/3 15:28:00
  发帖心情 Post By:2024/6/24 9:00:00 [只看该作者]

放到最后则会显示“不能在排序状态下移动行”,与如下代码效果一样:
Dim b As New CrossTableBuilder("排产计划表",DataTables("生产进度表"))
b.HGroups.AddDef("地址")
b.HGroups.AddDef("设计师")
b.HGroups.AddDef("拆单员")
b.HGroups.AddDef("属性")
b.HGroups.AddDef("生产状态")
b.HGroups.AddDef("开料_开工日期",DateGroupEnum.none)
b.VGroups.AddDef("开料_开工日期",DateGroupEnum.Year,"{0}年")
b.VGroups.AddDef("开料_开工日期","{0}月")
b.VGroups.AddDef("开料_开工日期",DateGroupEnum.day,"{0}日")
b.Totals.AddDef("开料_数量")
b.OrderByTotal = True
b.VerticalTotal= True
b.HorizontalTotal = True
b.filter = Tables("生产进度表").filter
Dim t As Table = e.form.controls("Table5").Table
t.datasource = b.BuildDataSource
t.DataTable.GlobalHandler.AfterEdit = True
t.AllowEdit = True
e.form.controls("Table5").Table.AutoSizeCols(3)
t.DefaultRowHeight = 31
t.DataTable.DataCols.Add("_sortkey", Gettype(Decimal))
t.Sort = "开料_开工日期,地址"
For Each r As Row In t.Rows
    r("_sortkey") = r.Index
Next
t.rows(t.rows.count - 1).Move(0)
t.Sort = "_sortkey"
t.DataTable.AcceptChanges
t.ResumeRedraw
t.Font = New Font("宋体",10.5,FontStyle.Regular)

For Each cl As Col In t.Cols  '整表居中
            cl.TextAlign = TextAlignEnum.Center
  Next

t.Cols("地址").TextAlign = TextAlignEnum.Left

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


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

把下面代码去掉,如果有_sortkey列,默认就会按_sortkey排序的,不需要多此一举

t.Sort = "_sortkey"

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


加好友 发短信
等级:二尾狐 帖子:576 积分:4737 威望:0 精华:0 注册:2014/7/3 15:28:00
  发帖心情 Post By:2024/6/24 9:22:00 [只看该作者]

我想让合计行到第一行,去掉这句就实现不了这样的目的,如果不去掉这句就可以实现,只是弹出一个对话框,但是关闭对话框功能得到了实现,如果有办法让这个弹窗不出现也可以


[此贴子已经被作者于2024/6/24 9:23:58编辑过]

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


加好友 发短信
等级:二尾狐 帖子:576 积分:4737 威望:0 精华:0 注册:2014/7/3 15:28:00
  发帖心情 Post By:2024/6/24 9:27:00 [只看该作者]

谢谢蓝老师,我已经找到方法了,代码再换下顺序就可以,另外我想问下,增加一列日期列,怎么显示出来的是数字,而不是日期:
b.HGroups.AddDef("预交日期")
[此贴子已经被作者于2024/6/24 9:30:06编辑过]

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


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

添加水平分组到HGroups的语法是: 

HGroups.AddDef(Name)
HGroups.AddDef(Name, NewName)
HGroups.AddDef(Name, NewName, NewCaption)
HGroups.AddDef(Name, DateGroup)
HGroups.AddDef(Name, DateGroup, NewName)
HGroups.AddDef(Name, DateGroup, NewName, NewCaption)

参数说明

Name:        字符型,指定分组列。
NewName:     字符型,用于给分组列指定一个新的名称,这个名称在统计表中显示。
NewCaption:  字符型,用于给分组列设置标题。
DateGroup:  DateGroupEnum型枚举,如果分组列是日期列,可用此属性指定如何根据日期进行分组,默认按月分组。

DateGroupEnum枚举的可选值:

 

None :     不分组
Year:      按年分组
Quarter:   按季度分组
Month:     按月分组
Week:      按周分组
Day:       按天分组,月中的某一天。
Hour:      按小时分组
Minute:    按分钟分组 Second:    按秒分组


 回到顶部