Foxtable(狐表)用户栏目专家坐堂 → [求助]一个人多个算法的项目该如何统计总分呢?


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

主题:[求助]一个人多个算法的项目该如何统计总分呢?

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


加好友 发短信
等级:狐神 帖子:4627 积分:33767 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/1/31 17:05:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


 回到顶部
帅哥哟,离线,有人找我吗?
淡笑风云
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:23 积分:244 威望:0 精华:0 注册:2019/1/23 10:56:00
回复:(y2287958)[upload=table,管理项目1.table]vi...  发帖心情 Post By:2019/1/31 20:16:00 [只看该作者]

谢谢老师!

 回到顶部
帅哥哟,离线,有人找我吗?
淡笑风云
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:23 积分:244 威望:0 精华:0 注册:2019/1/23 10:56:00
回复:(y2287958)[upload=table,管理项目1.table]vi...  发帖心情 Post By:2019/2/13 20:12:00 [只看该作者]

老师,我看了下代码  有几句不是太明白我标注了一下。  我是新手,能帮忙注释一下吗?谢谢。
Dim dic As New Dictionary(Of String, Double)  
For Each dr As DataRow In DataTables("考核得分汇总表").Select("计分分类='综合'")  
    Dim key As String = dr("被考核科室")
    If dic.ContainsKey(key) = False   
        dic.Add(key,10-dr("实际得分"))
    Else
        dic(key) += 10-dr("实际得分")
    End If
Next 
For Each k As String In dic.Keys
    Output.Show(K & ":" & dic(k))
Next
Dim bm As String = "统计表1"
Dim b As New SQLGroupTableBuilder(bm,"考核得分汇总表")
b.Groups.AddDef("被考核科室")
b.Totals.AddDef("实际得分")
b.Filter = "计分分类='单项'"
b.Build
For Each dr As DataRow In DataTables(bm).DataRows
    dr("实际得分") += iif(dic(dr("被考核科室")) >= 10,0,10-dic(dr("被考核科室")))
Next
MainTable = Tables(bm)

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/13 21:57:00 [只看该作者]

1、看看

 

http://www.foxtable.com/webhelp/scr/1945.htm

 

2、

 

Dim dic As New Dictionary(Of String, Double)  
For Each dr As DataRow In DataTables("考核得分汇总表").Select("计分分类='综合'")  
 
'提取科室数据,累计科室的分数
    Dim key As String = dr("被考核科室")
    If dic.ContainsKey(key) = False   
        dic.Add(key,10-dr("实际得分"))
    Else
        dic(key) += 10-dr("实际得分")
    End If
Next 
For Each k As String In dic.Keys
    Output.Show(K & ":" & dic(k))
Next
Dim bm As String = "统计表1"
Dim b As New SQLGroupTableBuilder(bm,"考核得分汇总表")
b.Groups.AddDef("被考核科室")
b.Totals.AddDef("实际得分")
b.Filter = "计分分类='单项'"
b.Build
For Each dr As DataRow In DataTables(bm).DataRows
 
'把数据写入到表格里面
    dr("实际得分") += iif(dic(dr("被考核科室")) >= 10,0,10-dic(dr("被考核科室")))
Next
MainTable = Tables(bm)

 回到顶部
帅哥哟,离线,有人找我吗?
淡笑风云
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:23 积分:244 威望:0 精华:0 注册:2019/1/23 10:56:00
回复:(有点甜)1、看看 http://www.foxtab...  发帖心情 Post By:2019/2/15 15:00:00 [只看该作者]

老师,我看了几天了 还不是太明白。   
我按我自己理解的做了一下释义, 可最终执行的结果和自己理解的不一样。
麻烦老师 再帮我讲解一下,谢谢!
Dim dic As New Dictionary(Of String, Double)                                                           '定义变量 dic 为  新的 字典(键类型为字符串,值类型为双精度值)
 For Each dr As DataRow In DataTables("考核得分汇总表").Select("计分分类=   '综合'")    '显示考核得分汇总表中 包含综合的每一行
    Dim key As String = dr("被考核科室")                                                                    '定义变量 key 为 字符串  为  dr("被考核科室")

    If dic.ContainsKey(key) = False                                                                          '如果 字典中”被考核科室 “不包含”综合“ 。 
       dic.Add(key,10-dr("实际得分"))                                                                        '字典中 添加  ”被考核科室“,10-dr("实际得分") 
    Else                                                                                                                 '否则
       dic(key) += 10-dr("实际得分")                                                                         '字典中被考核科室 =被考核科室+10-dr("实际得分")
    End If                                                                                                              '结束 
 Next                                                                                                                   '下一句
 For Each k As String In dic.Keys                                                                            '设定变量k 为 字符串位于dic.Keys
    Output.Show(K & ":" & dic(k))                                                                           '显示变量K,及K值
 Next                                                                                                                   '下一句


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/15 15:07:00 [只看该作者]

把不重复的科室的值,存放在字典里面

 

If dic.ContainsKey(key) = False                                                                         如果字典里不存在,就添加
    dic.Add(key,10-dr("实际得分"))                                                                       
Else                                                                                                                 否则,科室的值累加起来
    dic(key) += 10-dr("实际得分")                                                                        
End If


 回到顶部
帅哥哟,离线,有人找我吗?
淡笑风云
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:23 积分:244 威望:0 精华:0 注册:2019/1/23 10:56:00
回复:(有点甜)把不重复的科室的值,存放在字典里面...  发帖心情 Post By:2019/2/18 22:09:00 [只看该作者]

老师,有的被考核科室 计分分类全是是单项计分的,
有的被考核科室是单项和综合计分的。 

公式引用后提示 给定关键字不在字典中。是不是缺少判断条件,该如何写呢?麻烦了老师。

Dim dic As New Dictionary(Of String, Double)  
For Each dr As DataRow In DataTables("考核得分汇总表").Select("计分分类='综合'")  
    Dim key As String = dr("被考核科室")
    If dic.ContainsKey(key) = False   
        dic.Add(key,10-dr("实际得分"))
    Else
        dic(key) += 10-dr("实际得分")
    End If
Next 
For Each k As String In dic.Keys
    Output.Show(K & ":" & dic(k))
Next
Dim bm As String = "统计表1"
Dim b As New SQLGroupTableBuilder(bm,"考核得分汇总表")
b.Groups.AddDef("被考核科室")
b.Totals.AddDef("实际得分")
b.Filter = "计分分类='单项'"
b.Build
For Each dr As DataRow In DataTables(bm).DataRows
    dr("实际得分") += iif(dic(dr("被考核科室")) >= 10,0,10-dic(dr("被考核科室")))
Next
MainTable = Tables(bm)


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


加好友 发短信
等级:超级版主 帖子:106088 积分:539545 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/18 22:22:00 [只看该作者]

请上传具体实例测试

 回到顶部
帅哥哟,离线,有人找我吗?
淡笑风云
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:23 积分:244 威望:0 精华:0 注册:2019/1/23 10:56:00
回复:(淡笑风云)回复:(有点甜)把不重复的科室的...  发帖心情 Post By:2019/2/19 7:48:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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


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

……
Dim bm As String = "统计表1"
Dim b As New SQLGroupTableBuilder(bm,"考核得分汇总表")
b.Groups.AddDef("被考核科室")
b.Totals.AddDef("实际得分")
b.Filter = "计分分类='单项'"
b.Build
For Each dr As DataRow In DataTables(bm).DataRows
    Dim ks As String = dr("被考核科室")
    If dic.ContainsKey(ks) Then
        dr("实际得分") += iif(dic(ks) >= 10,0,10-dic(ks))
    End If
Next
MainTable = Tables(bm)

 回到顶部
总数 20 上一页 1 2