Foxtable(狐表)用户栏目专家坐堂 → [求助]一对多组合


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

主题:[求助]一对多组合

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


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
[求助]一对多组合  发帖心情 Post By:2020/7/11 14:41:00 [只看该作者]

Dim b As New GroupTableBuilder("统计表",DataTables("查询表1"))

Dim  dt As   fxDataSource

b.Groups.AddDef("部门名称")

 b.Groups.AddDef(HZ1)

b.Totals.AddDef("金额","本年销售")

 b.Filter = "年份 = " & N1 & " and (科目编号 Like '600101%' or 科目编号 like '600102%')  And (" & filter1 & ") and 金额<>0"

dt =   b.BuildDataSource()

 

Dim b1 As New GroupTableBuilder("统计表1",DataTables("查询表1"))

Dim  dt1 As   fxDataSource

b1.Groups.AddDef("部门名称")

 b1.Groups.AddDef(HZ1)

b1.Totals.AddDef("金额","上年销售")

 b1.Filter = "年份 = " & N2 & " and (科目编号 Like '600101%' or 科目编号 like '600102%')  And (" & filter1 & ") and 金额<>0"

dt1 =   b1.BuildDataSource()

 

Dim b2 As New GroupTableBuilder("统计表2",DataTables("查询表1"))

Dim  dt2 As   fxDataSource

b2.Groups.AddDef("开店日期",DateGroupEnum.None)

b2.Groups.AddDef("关店日期",DateGroupEnum.None)

 b2.Groups.AddDef("部门名称")

 b2.Groups.AddDef(HZ1)

 b2.Groups.AddDef(HZ3)

b2.Totals.AddDef("金额","本年费用")

 b2.Filter = "年份 = " & N1 & " and 科目编号 Like '6601%' And (" & filter1 & ") And (" & filter2 & ") and 金额<>0"

dt2 =   b2.BuildDataSource()

 

Dim b3 As New GroupTableBuilder("统计表3",DataTables("查询表1"))

Dim  dt3 As   fxDataSource

b3.Groups.AddDef("开店日期",DateGroupEnum.None)

b3.Groups.AddDef("关店日期",DateGroupEnum.None)

 b3.Groups.AddDef("部门名称")

 b3.Groups.AddDef(HZ1)

 b3.Groups.AddDef(HZ3)

b3.Totals.AddDef("金额","上年费用")

 b3.Filter = "年份 = " & N2 & " and 科目编号 Like '6601%' And (" & filter1 & ") And (" & filter2 & ") and 金额<>0"

dt3 =   b3.BuildDataSource()

 

 

Dim  nms As String()

Dim  nms1 As String()

 

nms =new String()  {"部门名称",HZ1}  '指定连接列

nms1  =new String()  {"部门名称",HZ1,HZ3,"开店日期","关店日期"}  '指定连接列

 

dt2.Combine(nms1,dt3,nms1)  '将销售统计数据组合到进货统计数据

dt2.Combine(nms,dt,nms)  '将销售统计数据组合到进货统计数据

dt2.Combine(nms,dt1,nms)  '将销售统计数据组合到进货统计数据

 

 

Tables("店铺指标同期分析_Table1").DataSource = dt2 '将统计结果绑定到Table

 

Dim t2 As Table = Tables("店铺指标同期分析_Table1")

Dim n11,m11 As Double

Dim bm As String = ""

For Each r As Row In t2.Rows

    If bm = r("部门名称") Then

        If r.IsNull("本年销售") = False Then

            n11 = r("本年销售")

        Else

            r("本年销售") = n11

        End If

        If r.IsNull("上年销售") = False Then

            m11 = r("上年销售")

        Else

            r("上年销售") = m11

        End If

 

    Else

        bm = r("部门名称")

        n11 = r("本年销售")

        m11 = r("上年销售")

    End If

Next


结果如下图所示


此主题相关图片如下:e8034ce2-33c2-427a-834d-c7497516ed29.png
按此在新窗口浏览图片


发现只要“本年费用”列前面部分有数据,后面部分为空,那空的部分对应的“本年销售”和“上年销售”列的数据就填充不下来

希望实现“本年销售”和“上年销售”同列里每个单元格的数据都有且都是相同的,要怎么调整


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105935 积分:538744 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/11 14:50:00 [只看该作者]

请上传实例测试

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


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2020/7/11 14:52:00 [只看该作者]

涉及的信息太多,没法传实例呢

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105935 积分:538744 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/11 14:56:00 [只看该作者]

新建项目,导入对应的表格,做一部分测试数据,发上来

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


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2020/7/11 15:22:00 [只看该作者]

算了,迂回解决一下,先把上年的填充好再合并过来



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


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2020/11/3 17:17:00 [只看该作者]

Dim m11,m12 As Double

Dim bm As String = ""

For Each r8 As Row In t3.Rows

    If bm = r8("部门名称") & r8("月份") Then

        If r8.IsNull("本年_实际销售") = False Then

            m11 = r8("本年_实际销售")

        Else

            r8("本年_实际销售") = m11

        End If   

    Else

        bm = r8("部门名称") & r8("月份")

        m11 = r8("本年_实际销售")

End If

Next

结果是下图这样


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


应该是下图这样,要如何调整

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

t3.filter = "本年_实际销售 is not null"
Dim dict As new Dictionary(of Integer,Double)
For Each r As Row In t3.rows
    If dict.ContainsKey(r("月份")) = False Then Dict.Add(r("月份"),r("本年_实际销售"))
Next

t3.filter = "本年_实际销售 is null"
For Each r As Row In t3.rows
    If dict.ContainsKey(r("月份"))  Then r("本年_实际销售") = Dict(r("月份"))
Next

 回到顶部