Foxtable(狐表)用户栏目专家坐堂 → 遍历统计工具,组合统计


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

主题:遍历统计工具,组合统计

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/1 10:25:00 [显示全部帖子]

 不行啊,表名、列名 都不一样啊,即便写成循环,你也要把表名、列名、别名那些东西定义到数组里面记录的啊。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/1 10:32:00 [显示全部帖子]

 那你就提取出来,定义到几个数组里,循环,分别取出。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/1 11:28:00 [显示全部帖子]

参考代码

 

Dim ary1() As String = {"CheckBox8", "CheckBox9", "CheckBox10"}
dim ary2() as string = {"表1", "表2", "表3"}
dim ary3() as string = {"列1", "列2", "列3"}
dim ary4() as string = {"名1", "名2", "名3"}

for i as integer = 0 to ary1.length - 1
    if forms("").controls(ary1(i)).checked Then
        msgbox(ary2(i))
        msgbox(ary3(i))
        msgbox(ary4(i))
    End If
Next


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/1 14:15:00 [显示全部帖子]

 没看到你发什么。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/1 14:42:00 [显示全部帖子]

Dim ary1() As String = {"CheckBox8", "CheckBox9", "CheckBox10"}
Dim ary2() As String = {"陈列量", "动销量","库位销售分析"}  '表名
Dim ary3() As String = {"陈列量", "动销量", "销售件数"}   '列名
Dim ary4() As String = {"陈列sku数", "动销sku数", "销售件数"}   '列名
Dim ary5() As String = {"统计表1", "统计表2", "统计表3"}   '统计表

Dim pdt As fxDataSource = Nothing
Dim ls As new List(of String)
ls.add("门店")
ls.add("库位")
For Each c As Object In e.Form.controls("groupbox3").children
    If c.checked Then
        ls.add(c.text)
    End If
Next
Dim nms As String() = ls.ToArray


For i As Integer = 0 To ary1.length - 1
    If e.form.controls(ary1(i)).checked Then
        Dim bdn As New SQLcrossTableBuilder(ary5(i),ary2(i))
       
        bdn.HGroups.AddDef("门店") '添加客户列用于水平分组
        bdn.HGroups.AddDef("库位") '添加客户列用于水平分组
        bdn.vGroups.AddDef("调整期间","调整期间_{0}") '添加客户列用于水平分组
        bdn.Totals.AddDef(ary3(i),ary4(i)) '添加数量列用于统计
        bdn.Totals.AddDef(ary3(i),ary4(i)) '添加数量列用于统计
        Dim dt = bdn.BuildDataSource()
       
        If pdt Is Nothing AndAlso dt IsNot Nothing Then
            pdt = dt
        Else
            If pdt IsNot Nothing AndAlso dt IsNot Nothing Then
                pdt.Combine(nms,dt,nms)
            End If
        End If
    End If
Next

Tables(e.Form.Name & "_table1").StopRedraw
Tables(e.Form.Name & "_table1").DataSource = pdt


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/1 15:22:00 [显示全部帖子]

Dim ary1() As String = {"CheckBox8", "CheckBox9", "CheckBox10"}
Dim ary2() As String = {"陈列量", "动销量","库位销售分析"}  '表名
Dim ary3() As String = {"陈列量", "动销量", "销售数量|销售金额"}   '列名
Dim ary4() As String = {"陈列sku数", "动销sku数", "销售件数|销售金额"} '列名
Dim ary5() As String = {"统计表1", "统计表2", "统计表3"}   '统计表

Dim pdt As fxDataSource = Nothing
Dim ls As new List(of String)
ls.add("门店")
ls.add("库位")
For Each c As Object In e.Form.controls("groupbox3").children
    If c.checked Then
        ls.add(c.text)
    End If
Next
Dim nms As String() = ls.ToArray


For i As Integer = 0 To ary1.length - 1
    If e.form.controls(ary1(i)).checked Then
        Dim bdn As New SQLcrossTableBuilder(ary5(i),ary2(i))
       
        bdn.HGroups.AddDef("门店") '添加客户列用于水平分组
        bdn.HGroups.AddDef("库位") '添加客户列用于水平分组
        bdn.vGroups.AddDef("调整期间","调整期间_{0}") '添加客户列用于水平分组
        Dim ary6() As String = ary3(i).split("|")
        Dim ary7() As String = ary4(i).split("|")
        For j As Integer = 0 To ary6.length-1
            bdn.Totals.AddDef(ary6(j),ary7(j)) '添加数量列用于统计
        End If

        Dim dt = bdn.BuildDataSource()
       
        If pdt Is Nothing AndAlso dt IsNot Nothing Then
            pdt = dt
        Else
            If pdt IsNot Nothing AndAlso dt IsNot Nothing Then
                pdt.Combine(nms,dt,nms)
            End If
        End If
    End If
Next

Tables(e.Form.Name & "_table1").StopRedraw
Tables(e.Form.Name & "_table1").DataSource = pdt


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/1 18:12:00 [显示全部帖子]

Dim ary1() As String = {"CheckBox8", "CheckBox9", "CheckBox10|CheckBox11"}
Dim ary2() As String = {"陈列量", "动销量","库位销售分析"}  '表名
Dim ary3() As String = {"陈列量", "动销量", "销售数量|销售金额,吊牌金额"}   '列名
Dim ary4() As String = {"陈列sku数", "动销sku数", "销售件数|销售金额,吊牌金额"} '列名
Dim ary5() As String = {"统计表1", "统计表2", "统计表3"}   '统计表

Dim pdt As fxDataSource = Nothing
Dim ls As new List(of String)
ls.add("门店")
ls.add("库位")
For Each c As Object In e.Form.controls("groupbox3").children
    If c.checked Then
        ls.add(c.text)
    End If
Next
Dim nms As String() = ls.ToArray


For i As Integer = 0 To ary1.length - 1
    Dim ary8() As String = ary1(i).split("|")
    Dim isChecked = False
    For Each s As String In ary8
        If e.form.controls(s).checked Then
            isChecked = True
        End If
    Next
   
    If isChecked Then
        Dim bdn As New SQLcrossTableBuilder(ary5(i),ary2(i))
       
        bdn.HGroups.AddDef("门店") '添加客户列用于水平分组
        bdn.HGroups.AddDef("库位") '添加客户列用于水平分组
        bdn.vGroups.AddDef("调整期间","调整期间_{0}") '添加客户列用于水平分组
        Dim ary6() As String = ary3(i).split("|")
        Dim ary7() As String = ary4(i).split("|")
        For k As Integer = 0 To ary8.length - 1
            If e.form.controls(ary8(k)).checked Then
                Dim ary9() As String = ary6(k).split(",")
                Dim ary10() As String = ary7(k).split(",")
                For j As Integer = 0 To ary9.length-1
                    bdn.Totals.AddDef(ary9(j),ary10(j)) '添加数量列用于统计
                next
               
            End If
        Next
       
       
        Dim dt = bdn.BuildDataSource()
       
        If pdt Is Nothing AndAlso dt IsNot Nothing Then
            pdt = dt
        Else
            If pdt IsNot Nothing AndAlso dt IsNot Nothing Then
                pdt.Combine(nms,dt,nms)
            End If
        End If
    End If
Next

Tables(e.Form.Name & "_table1").StopRedraw
Tables(e.Form.Name & "_table1").DataSource = pdt


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/2 18:59:00 [显示全部帖子]

以下是引用fubblyc在2016/8/2 16:14:00的发言:
还是没找到原因,哎~

 

你的统计表,有没有设置条件filler?msgbox条件看一下。


 回到顶部