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


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

主题:多值字段统计问题

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
多值字段统计问题  发帖心情 Post By:2014/5/16 14:33:00 [只看该作者]

表中如果没有“数量”字段,直接按员工工号在每一行出现的次数统计应该怎么改?

员工工号:

002,004,009

002,009,038

 

统计002为2次,009为2次。

 

Dim dt As DataTable
Dim dtb As New DataTableBuilder("统计")
Dim lst As New Dictionary(of String ,DataRow)
dtb.AddDef("工号", Gettype(String), 16)
dtb.AddDef("数量", Gettype(Double))
dt = dtb.Build
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
            If lst.ContainsKey(nm)
                dr2= lst(nm)
            Else
                dr2 = dt.AddNew()
                dr2("工号") = nm
                lst.add(nm,dr2)
            End If
            dr2("数量") = dr2("数量") + v
        Next
    End If
Next


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/16 14:42:00 [只看该作者]


统计工号次数直接用下面的代码即可.
DataTables("产量登记表_多值字段").Compute("Count(员工工号)","员工工号 like '%002%'")

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2014/5/16 22:03:00 [只看该作者]

BIN老师,我想在上面的代码基础上实现功能。因为我想把统计的数据放在临时表中以供目录树调用。说白了就是想让我的目录树根据员工工号的值生成,在筛选显示统计数据

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/17 8:28:00 [只看该作者]

Dim lst As New List(of String )
For Each dr1 As DataRow In DataTables("产量登记表_多值字段").DataRows
    If dr1.IsNull("员工工号") = False Then
        Dim nms() As String = dr1("员工工号").Split(",")
        For Each nm As String In nms
            If lst.ContainsKey(nm)=false then
             dim dr as datarow =DataTables("统计").addnew
                lst.add(nm)
             dr("工号")=nm
             dr("数量")= DataTables("产量登记表_多值字段").Compute("Count(员工工号)","员工工号 like '%" & nm & "%'")
            End If
        Next
    End If
Next

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2014/5/19 11:08:00 [只看该作者]


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

If lst.ContainsKey(nm)=False Then
这行代码报错

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/19 11:13:00 [只看该作者]

If lst.Contains(nm)=False Then

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2014/5/19 11:19:00 [只看该作者]

问题及时解决,对我帮助很大,由衷感谢帮助过我的老师们

 回到顶部