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


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

主题:多值字段统计的问题请教?

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


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

 比较麻烦,你做个有数据的例子发上来。

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


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

Dim sd As Date = "2016-04-10"
Dim ed As Date = "2016-05-20"

Dim dt As DataTable
Dim dtb As New  DataTableBuilder("统计表")
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("派单").Select("日期>=#" & sd & "# and 日期 <#" & ed.AddDays(1) & "#")
    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) '将此行赋值给变量dr2
            Else
                dr2 = dt.AddNew() '否则增加一行.
                dr2("工号") = nm  '新增行的工号列设置为此工号
                lst.add(nm,dr2) '将新增行添加到字典中,以便接下来检索
            End If
            dr2("计分金额") = dr2("计分金额") + v  '加上平均后的产量
        Next
    End If
Next

 

http://www.foxtable.com/help/topics/2720.htm

 



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


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

Dim sd As Date = e.Form.Controls("DateTimePicker1").Value
Dim ed As Date = e.Form.Controls("DateTimePicker2").Value

Dim dt As DataTable
Dim dtb As New  DataTableBuilder("统计表")
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("派单").Select("日期>=#" & sd & "# and 日期 <#" & ed.AddDays(1) & "#")
    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) '将此行赋值给变量dr2
            Else
                dr2 = dt.AddNew() '否则增加一行.
                dr2("员工") = nm  '新增行的员工列设置为此员工
                lst.add(nm,dr2) '将新增行添加到字典中,以便接下来检索
            End If
            dr2("计分金额") = dr2("计分金额") + v  '加上平均后的产量
        Next
    End If
Next
e.Form.Controls("统计表").Table.DataSource = DataTables("统计表")


 回到顶部