以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=147418)

--  作者:670163008
--  发布时间:2020/3/16 14:27:00
--  统计的问题

有一个“稿件”表库,我需要根据这个库,按单位计算本单位作者的稿费,并根据单位内部考核要求,计算出每位作者的稿费在本单位中的占比,以此来计算他的得分。

由于一个稿件多人稿件时,多个作者放在一个格子里,该如何统计呢

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:投稿系统.table


--  作者:有点蓝
--  发布时间:2020/3/16 15:05:00
--  
以这2行数据为例,说明一下,应该怎么分。然后得到什么结果

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


--  作者:670163008
--  发布时间:2020/3/16 21:21:00
--  
同一篇稿件,多个作者,稿费要按人头
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:单位1考核情况表.xlsx

平均分
--  作者:有点蓝
--  发布时间:2020/3/16 21:48:00
--  
作者按人头。单位呢?计算本单位总稿费,比如2楼第二条记录,4个作者4个单位,哪个作者是哪个单位的?还有些3个作者2个单位又怎么区分?
--  作者:670163008
--  发布时间:2020/3/17 8:26:00
--  
嗯,增加一张作者信息表,每位作者对应了一个单位。
现在这张表里的稿件作者我的对应关系是,作者1-作者5,属于单位1;作者6-作者10,属于单位2,作者11-作者15,属于单位3,作者16-作者20,属于单位4.
我重新上传 了项目,增加了“通讯员”表
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:投稿系统.table


--  作者:有点蓝
--  发布时间: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")

--  作者:670163008
--  发布时间:2020/3/18 8:23:00
--  

因为写稿是“编辑部”五位作者“编辑部作者1-编辑部作者5”的主要工作,他们每个月的考核得分为:“稿费占比*20”与“推广得分”之和。

所以需要:

、统计稿费占比时,只统计“编辑部”所有作者

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:投稿系统.table

的稿费占比。

、统计出的占比能否放在固定的表“考核”表中的“占比”。

三、如果可以,稿件在多个作者合作时,在计算占比时,稿费只由“编辑部”的作者(编辑部作者1-编辑部作者5)分配稿费:

1、如果全是编辑部的作者,既“编辑部作者1-编辑部作者5”,大家平均分配稿费。

2、如果作者有其他单位的作者,在计算占比时,稿费也是按照“编辑部”作者的人数来分配,其他单位的作者不分配稿费。


--  作者:有点蓝
--  发布时间:2020/3/18 9:27:00
--  
看懂代码,自己先改改。如果完全看不懂,请先学习:http://www.foxtable.com/webhelp/topics/0207.htm
--  作者:670163008
--  发布时间:2020/3/18 9:39:00
--  

统计放在固定表试了很久啊,没有哪里说到,搞了一个多星期。


--  作者:有点蓝
--  发布时间: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