Foxtable(狐表)用户栏目专家坐堂 → 多值字段统计


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

主题:多值字段统计

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


加好友 发短信
等级:童狐 帖子:238 积分:1943 威望:0 精华:0 注册:2016/1/11 8:40:00
多值字段统计  发帖心情 Post By:2019/6/3 13:36:00 [只看该作者]

各位专家好!
      我在专业报表中编写了如下代码:

生成统计表的结构
Dim
 dt As DataTable
Dim
 dtb As New DataTableBuilder("统计")
dtb.AddDef(
"工号"Gettype(String), 16)
dtb.AddDef(
"产品"Gettype(String), 16)
dtb.AddDef(
"数量"Gettype(Double))
dt = dtb.Build()

'开始逐行累加统计

Dim
 lst As New Dictionary(of String ,DataRow'定义一个字典,用于检索每个员工在统计表中对应的行
For
 Each dr1 As DataRow In DataTables("产量登记").DataRows
    If
 dr1.IsNull("员工工号") = False Then 
'如果工号列不为空
    
    Dim nms() As String = dr1("员工工号").Split(","'将工号列内容拆分成数组
    
    Dim v As Double = dr1("数量") / nms.Length '获得平均之后每个工号的生产数量
        For
 Each nm As String In nms
 '遍历参与加工此产品的每个工号
            
Dim dr2 As DataRow 
            Dim
 key As String = nm & "|" & dr1("产品"
'这里是关键,由工号和产品组成字典的关键词.
            
If lst.ContainsKey(key) '如果集合中包括此关键词对应的行
                dr2= lst(key) 
'将此行赋值给变量dr2
            
Else
                dr2 = dt.AddNew() 
'否则增加一行.
                dr2(
"工号") = nm '新增行的工号列设置为此工号
                dr2(
"产品") = dr1("产品"'设置增行的产品
                lst.add(key,dr2) 
'将新增行添加到字典中,以便接下来检索
            
End If
        dr2(
"数量") = dr2("数量") + v '加上平均后的产量
        
Next
    
End If
Next
MainTable = Tables(
"统计")


然后在加载数中设置了分面加载。现在执行上述代码时,只统计出了当前加载页的数据,实际我想统计出统计选定节点下的所有数据,而非当前页的数据。请问以上代码还需要如何调整?谢谢!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/3 15:42:00 [只看该作者]

For Each dr1 As DataRow In DataTables("产量登记").DataRows
 
改成
 
For Each dr1 As DataRow In DataTables("产量登记").sqlSelect("")

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


加好友 发短信
等级:童狐 帖子:238 积分:1943 威望:0 精华:0 注册:2016/1/11 8:40:00
  发帖心情 Post By:2019/6/4 13:51:00 [只看该作者]

谢谢回复!我将其修改后,能统计加载树选择后的其它未显示页面的数据了,但又不能实现我加载树选择什么部分就统计什么部分了。请问还需要作什么修改才能完成?谢谢!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/4 15:29:00 [只看该作者]

你点击加载树的时候,生成的条件,记录下来,然后写代码

 

For Each dr1 As DataRow In DataTables("产量登记").sqlSelect(这里写你加载树的条件)

 

比如 DataTables("产量登记").LoadFilter


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


加好友 发短信
等级:童狐 帖子:238 积分:1943 威望:0 精华:0 注册:2016/1/11 8:40:00
  发帖心情 Post By:2019/6/4 16:10:00 [只看该作者]

谢谢!谢谢!搞定了!

 回到顶部