Foxtable(狐表)用户栏目专家坐堂 → 统计问题-1


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

主题:统计问题-1

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:7536 威望:0 精华:0 注册:2020/11/4 22:15:00
统计问题-1  发帖心情 Post By:2023/6/13 10:20:00 [只看该作者]

Dim dt As DataTable
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("日期", Gettype( Date))
dtb.AddDef("工号", Gettype(String), 16)
dtb.AddDef("产品", Gettype(String), 16)
dtb.AddDef("数量", Gettype(Double))
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) '
            Else
                dr2 = dt.AddNew() '
                
                dr2("工号") = nm '
                dr2("产品") = dr1
                lst.add(key,dr2) '
            End If
        dr2("数量") = dr2("数量") + v '
        Next
    End If
Next
MainTable = Tables("统计")
如何实现表二的效果?

[此贴子已经被作者于2023/6/13 16:54:15编辑过]

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/13 10:27:00 [只看该作者]

就是1楼的代码,有什么问题?

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:7536 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/6/13 10:44:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:窗口,统计,Button5,Click
详细错误信息:
从类型“DataRow”到类型“String”的转换无效。

图片点击可在新窗口打开查看此主题相关图片如下:多值统计错结果.jpg
图片点击可在新窗口打开查看



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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/13 10:47:00 [只看该作者]

            Else
                dr2 = dt.AddNew() '
                
                dr2("工号") = nm '
                dr2("产品") = dr1("产品")
                lst.add(key,dr2) '
            End If

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:7536 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/6/13 11:18:00 [只看该作者]

日期、产量、完成数没数据,第一个产品原表数据800,计算平均后应是各400,需计算超如图

图片点击可在新窗口打开查看此主题相关图片如下:多值结果错-2.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/13 11:36:00 [只看该作者]

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) '
            Else
                dr2 = dt.AddNew() '
                dr2("数量") = v '
                dr2("工号") = nm '
                dr2("产品") = dr1
                lst.add(key,dr2) '
            End If
        
        Next
    End If
Next
[此贴子已经被作者于2023/6/13 11:37:16编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:7536 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/6/13 12:43:00 [只看该作者]

Dim dt As DataTable
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("日期", GetType( Date))
dtb.AddDef("工号", GetType(String), 16)
dtb.AddDef("产品", GetType(String), 16)
dtb.AddDef("数量", GetType(Double))
dtb.AddDef("产量", GetType(Double))
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)  Then'
                dr2 = lst(key) '
            Else
                dr2 = dt.AddNew() '
                dr2("数量") = v '
                dr2("工号") = nm '
                dr2("产品") = dr1
                lst.add(key, dr2) '
            End If
        
        Next
    End If
Next

MainTable = Tables("统计")

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:窗口,统计,Button5,Click
详细错误信息:
从类型“DataRow”到类型“String”的转换无效。
[此贴子已经被作者于2023/6/13 12:43:32编辑过]

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/13 13:28:00 [只看该作者]

看4楼

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


加好友 发短信
等级:五尾狐 帖子:1142 积分:7536 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/6/13 14:35:00 [只看该作者]



数据不完整,如图
[此贴子已经被作者于2023/6/13 16:54:38编辑过]

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/13 14:38:00 [只看该作者]

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 = dt.AddNew() '
                dr2("数量") = v '
                dr2("工号") = nm '
                dr2("产品") = dr1("产品")
        Next
    End If
Next

 回到顶部