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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
遍历统计工具,组合统计  发帖心情 Post By:2016/8/1 10:17:00 [只看该作者]


此主题相关图片如下:13.png
按此在新窗口浏览图片

三个统计表,如上,想根据不同的选择情况进行组合统计。

不想分别做三个统计工具,而是想用比如 遍历 的方式 来 根据勾选的情况 ,进行 遍历统计 再 组合。

现在不知道 遍历 统计  怎么写。。。 

 


Dim dt3 As fxDataSource
Dim dt2 As fxDataSource
Dim dt1 As fxDataSource

 

Dim m As String

If  e.Form.Controls("CheckBox8").checked  Then

m = "陈列量"

end if

If  e.Form.Controls("CheckBox9").checked  Then

m = "动销量"

end if

 

If  e.Form.Controls("CheckBox10").checked  Then

m = "库位销售分析"

end if


Dim bdns As String() = {"bd1","bd2","bd3"}
For Each bdn As String In bdns
    

       
    Dim bdn As New SQLcrossTableBuilder("统计表3",m)
   
    bdn.C
    bdn.HGroups.AddDef("门店") '添加客户列用于水平分组
    bdn.HGroups.AddDef("库位") '添加客户列用于水平分组    
    bdn.vGroups.AddDef("调整期间","调整期间_{0}") '添加客户列用于水平分组
   
    If  e.Form.Controls("CheckBox8").checked  Then    '统计陈列量这张表
        forms("提示窗口").Controls("Label1").text = "正在统计陈列sku数..."
        Application.DoEvents
        bdn.Totals.AddDef("陈列量","陈列sku数") '添加数量列用于统计
        bdn.Totals.AddDef("陈列量","陈列sku数") '添加数量列用于统计
        bdn.filter = filter
        dt3 = bdn.BuildDataSource()
    End If
   
    If  e.Form.Controls("CheckBox9").checked  Then
        forms("提示窗口").Controls("Label1").text = "正在统计动销sku数..."
        Application.DoEvents
        bdn.Totals.AddDef("动销量","动销sku数") '添加数量列用于统计
        bdn.Totals.AddDef("动销量","动销sku数") '添加数量列用于统计
        bdn.filter = filter
        bdn.CommandTimeOut = 600
        dt2 = bdn.BuildDataSource()
    End If
   
    If e.Form.Controls("CheckBox10").checked Then
        bdn.Totals.AddDef("销售数量","销售件数") '添加数量列用于统计        
        If filter2 >"" Then
            filter =filter & " And " & filter2
        End If
        bdn.filter = filter
        bdn.CommandTimeOut = 600
        dt1 = bdn.BuildDataSource()               
    End If
Next

 

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


Dim dts() As fxDataSource = {dt3,dt2,dt1}
Dim pdt As fxDataSource = Nothing
For Each dt As object In dts
    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
Next

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


[此贴子已经被作者于2016/8/1 10:19:35编辑过]

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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/8/1 10:29:00 [只看该作者]

主要是表名不一样,列名前面的分组的都一样,后面的统计列 可以 按 if 条件来。。。

分开写感觉代码很多,因为还有分组的列名有好多,而且都是一样的。所以就像试一下。

现在就不知道怎么把 表名  写成 数组里,然后遍历。。。

[此贴子已经被作者于2016/8/1 10:29:31编辑过]

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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/8/1 11:23:00 [只看该作者]

嗯嗯,有个问题:

Dim ms As String()
If e.Form.Controls("CheckBox8").checked And e.Form.Controls("CheckBox9").checked And e.Form.Controls("CheckBox10").checked   Then
ms = {"陈列量","动销量","库位销售分析"}

 

 

下面的统计,每遍历一次,因为 CheckBox8 和 CheckBox9 和 CheckBox10 都有勾上,两个都会再统计一次。那问题:

    If  e.Form.Controls("CheckBox8").checked  Then   '遍历到 m = 动销量 时,就会报错,因为动销量的表 没有 陈列量 的这一列。有办法规避吗?
        bdn.Totals.AddDef("陈列量","陈列sku数") '添加数量列用于统计
        bdn.filter = filter
        dt3 = bdn.BuildDataSource()
    End If
    If e.Form.Controls("CheckBox9").checked  Then
        bdn.Totals.AddDef("动销量","动销sku数") '添加数量列用于统计
        bdn.filter = filter
        dt2 = bdn.BuildDataSource()
    End If
    ......省略。。。
Next


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/8/1 11:56:00 [只看该作者]

 

[此贴子已经被作者于2016/8/1 12:01:13编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/8/1 11:57:00 [只看该作者]

 

[此贴子已经被作者于2016/8/1 12:00:56编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/8/1 14:06:00 [只看该作者]

 

[此贴子已经被作者于2016/8/1 14:07:51编辑过]

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


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

 没看到你发什么。

 回到顶部
总数 26 1 2 3 下一页