Foxtable(狐表)用户栏目专家坐堂 → 如何将一个数据底表的结构,如何展示时更改结构?


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

主题:如何将一个数据底表的结构,如何展示时更改结构?

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
如何将一个数据底表的结构,如何展示时更改结构?  发帖心情 Post By:2023/12/20 15:40:00 [只看该作者]

基础表的结构:

编号    子编号    类别    金额

A01     A01-01    成本     100

A01     A01-01    费用     200

A01     A01-02    成本     300

A01     A01-02    费用     400

 

导出表的结构:

编号    子编号    成本_金额    费用_金额

A01     A01-01    100           200

A01     A01-02    300           400


在AddCols时,应该怎么控制啊?

Dim jb As New SQLJoinTableBuilder("查询表1","基础表")

jb.C

jb.AddTable("基础表","编号","明细表","编号",JoinModeEnum.Left)

jb.AddCols("编号","子编号",********    )

jb.filter= filter

jb.Build()

[此贴子已经被作者于2023/12/20 15:43:40编辑过]

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


加好友 发短信
等级:超级版主 帖子:111372 积分:566924 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/20 15:47:00 [只看该作者]

这种使用交叉统计:http://www.foxtable.com/webhelp/topics/3285.htm

Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("
编号"'添加客户列用于水平分组
b.HGroups.AddDef("
子编号"'添加客户列用于水平分组
b.VGroups.AddDef("
类别"'添加产品列用于垂直分组
b.Totals.AddDef("
金额"'添加数量列用于统计
b.Build '
生成统计表
Maintable = Tables("统计表1"'打开生成的统计表

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/12/20 15:59:00 [只看该作者]

SQLGroupTableBuilder 的结果和SQLcrossTableBuilder的结果,能进行拼接吗
比如用:dt1.Combine("合同编号",dt3,"合同编号")


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


加好友 发短信
等级:超级版主 帖子:111372 积分:566924 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/20 16:26:00 [只看该作者]

可以

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/12/20 16:49:00 [只看该作者]

想在Combine后的结果拼上【明细表3】中的列,有办法吗?1、将【日期列】的最大值拼到后边,2、获取到对应的【明细编号】拼接字符串。
想要的结果(主要是最后两列怎么拼上):
编号    金额   数量    最大日期           明细编号
A01     100   200   2023-10-20     101,102
A02     300   400    2021-02-01     211,222
-----------------------------------------------------
Dim b As New SQLGroupTableBuilder("统计表2","明细表")
dt1 = b.BuildDataSource()

Dim b2 As New SQLGroupTableBuilder("统计表3","明细表2")
dt2 = b2.BuildDataSource()

dt1.Combine("编号",dt2,"编号")
dt1.Show("统计表2") '显示统计结果,必须有这一句

统计表2的结果:
编号    金额   数量  
A01     100   200
A02     300   400
-------------------------------------
明细表3的结构:
编号      日期                明细编号
A01    2022-10-10       101
A01    2023-10-20       102
A02    2020-01-01       211  
A02    2021-02-01       222

[此贴子已经被作者于2023/12/20 16:50:24编辑过]

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


加好友 发短信
等级:超级版主 帖子:111372 积分:566924 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/20 17:15:00 [只看该作者]

先生成统计表,然后遍历统计表所有行逐行处理,根据编号使用compute取最大日期,使用GetComboListString取明细编号

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/12/20 17:20:00 [只看该作者]

行比较多,遍历可能比较费时间。 能用公式解决吗?
DataTables("查询表1").DataCols.Add("最大日期",Gettype(date), "  **** " )
DataTables("查询表1").DataCols.Add("明细编号",Gettype(string), "  *****    " )

[此贴子已经被作者于2023/12/20 17:20:11编辑过]

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


加好友 发短信
等级:超级版主 帖子:111372 积分:566924 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/20 17:26:00 [只看该作者]

只能遍历

 回到顶部