以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求教]多表合并-代码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=136696) |
-- 作者:hcfbehero -- 发布时间:2019/6/19 12:06:00 -- [求教]多表合并-代码 版主,我换了个思路去做我之前想做的工资表,用多表合并来完成,想要达到的效果如下图一,我所做的代码如下,运行后出现如图二的错误,请您帮看下哪里有问题,帮忙修改下,谢谢!! 图一 图二 Dim g1 As New GroupTableBuilder("统计表1", DataTables("泵送明细")) Dim dt1 As fxDataSource g1.Groups.AddDef("财务结算年月") g1.Groups.AddDef("泵车信息_编号") g1.Groups.AddDef("泵车筛选", "车辆编号及车牌号") g1.Totals.AddDef("砼方量_签单", "车辆作业方量_签单") g1.Totals.AddDef("砼方量_补方", "车辆作业方量_补方") g1.Totals.AddDef("砼方量_合计", "车辆作业方量_合计") g1.VerticalTotal = True g1.Filter = "[财务结算年月] = 201905 and [泵车信息_编号] < 100" dt1 = g1.BuildDataSource() Dim g2 As New GroupTableBuilder("统计表1", DataTables("泵人档案")) Dim dt2 As fxDataSource g2.Groups.AddDef("泵工数据统计_年月", "泵工考勤统计_年月") g2.Groups.AddDef("泵工数据统计_编号", "泵工考勤统计_编号") g2.Groups.AddDef("泵工数据统计_人员", "泵工工资明细_姓名") g2.Totals.AddDef("泵工数据统计_基础工资", "泵工工资明细_基础工资") g2.Totals.AddDef("泵工数据统计_出勤", "泵工工资明细_出勤") g2.Filter = "[泵工数据统计_年月] = 201905" dt2 = g2.BuildDataSource() Dim g3 As New GroupTableBuilder("统计表1", DataTables("泵送明细")) Dim dt3 As fxDataSource g3.Groups.AddDef("财务结算年月") g3.Groups.AddDef("作业人员_1", "泵工工资明细_姓名") g3.Totals.AddDef("泵工方量分配_分配", "泵工工资明细_作业方量") g3.VerticalTotal = True g3.Filter = "[财务结算年月] = 201905 and [作业人员_1] is not null" dt3 = g3.BuildDataSource() Dim g4 As New GroupTableBuilder("统计表1", DataTables("泵送明细")) Dim dt4 As fxDataSource g4.Groups.AddDef("财务结算年月") g4.Groups.AddDef("作业人员_2", "泵工工资明细_姓名") g4.Totals.AddDef("泵工方量分配_分配", "泵工工资明细_作业方量") g4.VerticalTotal = True g4.Filter = "[财务结算年月] = 201905 and [作业人员_2] is not null" dt4 = g4.BuildDataSource() Dim g5 As New GroupTableBuilder("统计表1", DataTables("泵送明细")) Dim dt5 As fxDataSource g5.Groups.AddDef("财务结算年月") g5.Groups.AddDef("作业人员_3", "泵工工资明细_姓名") g5.Totals.AddDef("泵工方量分配_分配", "泵工工资明细_作业方量") g5.VerticalTotal = True g5.Filter = "[财务结算年月] = 201905 and [作业人员_3] is not null" dt5 = g5.BuildDataSource() Dim g6 As New GroupTableBuilder("统计表1", DataTables("泵送明细")) Dim dt6 As fxDataSource g6.Groups.AddDef("财务结算年月") g6.Groups.AddDef("作业人员_4", "泵工工资明细_姓名") g6.Totals.AddDef("泵工方量分配_分配", "泵工工资明细_作业方量") g6.VerticalTotal = True g6.Filter = "[财务结算年月] = 201905 and [作业人员_4] is not null" dt6 = g6.BuildDataSource() Dim g7 As New GroupTableBuilder("统计表1", DataTables("泵送明细")) Dim dt7 As fxDataSource g7.Groups.AddDef("财务结算年月") g7.Groups.AddDef("作业人员_5", "泵工工资明细_姓名") g7.Totals.AddDef("泵工方量分配_分配", "泵工工资明细_作业方量") g7.VerticalTotal = True g7.Filter = "[财务结算年月] = 201905 and [作业人员_5] is not null" dt7 = g7.BuildDataSource() Dim nms1 As String() = {"财务结算年月"} Dim nms2 As String() = {"泵工考勤统计_年月"} Dim nms3 As String() = {"财务结算年月"} Dim nms4 As String() = {"财务结算年月"} Dim nms5 As String() = {"财务结算年月"} Dim nms6 As String() = {"财务结算年月"} Dim nms7 As String() = {"财务结算年月"} dt1.Combine(nms1,dt2,nms2) dt1.Combine(nms1,dt3,nms3) dt1.Combine(nms1,dt4,nms4) dt1.Combine(nms1,dt5,nms5) dt1.Combine(nms1,dt6,nms6) dt1.Combine(nms1,dt7,nms7) Tables("泵送明细_Table6").DataSource = dt1 |
-- 作者:有点甜 -- 发布时间:2019/6/19 12:17:00 -- 数据重复的不能连接。比如你第一个表,有多个重复的年月,第二个表也有,这个时候,无法组合,因为值不唯一。 |
-- 作者:有点甜 -- 发布时间:2019/6/19 12:21:00 --
也就是,连接的列的值,必须唯一不能重复。
|
-- 作者:hcfbehero -- 发布时间:2019/6/19 15:09:00 -- 相当于,这个合并有7个表组成,第一个不要,合并后6个表,可否,也就是达到图一中人员开始后面的效果呢?也就是姓名,基础工资,出勤和作业方量,四列 |
-- 作者:有点甜 -- 发布时间:2019/6/19 16:00:00 -- 以下是引用hcfbehero在2019/6/19 15:09:00的发言:
相当于,这个合并有7个表组成,第一个不要,合并后6个表,可否,也就是达到图一中人员开始后面的效果呢?也就是姓名,基础工资,出勤和作业方量,四列
各个表的组合列,必须唯一、没有重复的值,才能连接的,否则,你只能用之前写给你的旧方法处理。
|
-- 作者:hcfbehero -- 发布时间:2019/6/19 17:36:00 -- 我再看下,有什么问题了,再请教您 |
-- 作者:有点甜 -- 发布时间:2019/6/19 18:32:00 -- 以下是引用hcfbehero在2019/6/19 17:36:00的发言:
我再看下,有什么问题了,再请教您
如果还有问题,做一个实例发上来测试。 |