以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何将一个数据底表的结构,如何展示时更改结构?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189716)

--  作者:guosheng
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间: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
--  发布时间:2023/12/20 15:59:00
--  
SQLGroupTableBuilder 的结果和SQLcrossTableBuilder的结果,能进行拼接吗
比如用:dt1.Combine("合同编号",dt3,"合同编号")


--  作者:有点蓝
--  发布时间:2023/12/20 16:26:00
--  
可以
--  作者:guosheng
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2023/12/20 17:15:00
--  
先生成统计表,然后遍历统计表所有行逐行处理,根据编号使用compute取最大日期,使用GetComboListString取明细编号
--  作者:guosheng
--  发布时间:2023/12/20 17:20:00
--  
行比较多,遍历可能比较费时间。 能用公式解决吗?
DataTables("查询表1").DataCols.Add("最大日期",Gettype(date), "  **** " )
DataTables("查询表1").DataCols.Add("明细编号",Gettype(string), "  *****    " )

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

--  作者:有点蓝
--  发布时间:2023/12/20 17:26:00
--  
只能遍历