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


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

主题:统计的问题

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/16 15:05:00 [显示全部帖子]

以这2行数据为例,说明一下,应该怎么分。然后得到什么结果

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


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/16 21:48:00 [显示全部帖子]

作者按人头。单位呢?计算本单位总稿费,比如2楼第二条记录,4个作者4个单位,哪个作者是哪个单位的?还有些3个作者2个单位又怎么区分?

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/17 8:53:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("姓名", Gettype(String), 32)
dtb.AddDef("单位", Gettype(String), 32)
dtb.AddDef("稿费", Gettype(Double))
dtb.Build()

Dim dict As new Dictionary(of String,Double)
For Each r As Row In Tables("稿件").Rows
    Dim ar() As String = r("姓名").split(",")
    Dim fy As Double = r("稿费") / ar.Length
    For Each s As String In ar
        If dict.ContainsKey(s) Then
            dict(s) = dict(s) + fy
        Else
            dict.Add(s,fy)
        End If
    Next
Next
Dim dr,d2 As DataRow
For Each key As String In dict.Keys
    dr = DataTables("统计").AddNew
    dr("姓名") = key
    dr("稿费") = dict(key)
    d2 = DataTables("通讯员").Find("姓名='" & key & "'")
    If d2 IsNot Nothing Then
        dr("单位") = d2("单位")
    End If
Next

Dim g As New GroupTableBuilder("统计表1", DataTables("统计"))
g.Groups.AddDef("单位")
g.Groups.AddDef("姓名")
g.Totals.AddDef("稿费")
g.GroupProportion = True
g.Build()
MainTable = Tables("统计表1")

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/18 9:27:00 [显示全部帖子]

看懂代码,自己先改改。如果完全看不懂,请先学习:http://www.foxtable.com/webhelp/topics/0207.htm

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/18 9:58:00 [显示全部帖子]

先生成统计表,然后在把数据移过去即可:

Dim g As New GroupTableBuilder("统计表1", DataTables("统计"))
g.Groups.AddDef("单位")
g.Groups.AddDef("姓名")
g.Totals.AddDef("稿费")
g.GroupProportion = True
g.Build()
for each r as row in Tables("统计表1").rows
 dim dr as datarow in DataTables("考核").find("单位='" & r("单位") & "' and 姓名='" & r("姓名") & "'")
if dr as isnot nothing then
dr("稿费") = r("稿费")
end if
next

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/19 9:17:00 [显示全部帖子]

这么明显的错误!从网页复制代码有很多多余的问号。

如果只会要代码,却一点都看不懂的,建议先学习一下基础:http://www.foxtable.com/webhelp/topics/1592.htm

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/20 9:47:00 [显示全部帖子]

For Each rr As Row In Tables("统计表1").rows

    Dim drr As DataRow = DataTables("考核").Find("姓名='" & rr("姓名") & "'")

    If drr  IsNot Nothing Then

        drr("比例") = rr("稿费单位gpr")

    End If

Next


 回到顶部