以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何进行判断,然后进行加权计算?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64938)

--  作者:hrw68529
--  发布时间:2015/3/5 14:07:00
--  [求助]如何进行判断,然后进行加权计算?
1、判断:“专业组名称”列相同名称的,如果“面试室”列不同(也就是相同的专业组名称,而不在一个面试室),则“加权计算”表中根据面试室进行加权计算;否则不进行加权计算;
2、加权计算:专业名称相同的,面试室不同,则对专业相同的各个面试室的人员,分别计算出每个面试室的原始成绩之和,然后除以这个面试室的人数,得出这个面试室的平均成绩,然后将专业名称相同的几个面试室的平均成绩相加,再除以这个面试室数,得出加权平均值,然后,用加权平均值除以各面试室平均值,得出各面试室的加权系数。
3、如何在“加权计算”表中,根据前面的判断,自动计算。
例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:信阳市职称评审成绩汇总系统.foxdb

[此贴子已经被作者于2015/3/5 14:10:56编辑过]

--  作者:有点甜
--  发布时间:2015/3/5 14:50:00
--  

Dim dt As DataTable = DataTables("职称评审成绩")
Dim dt_d As DataTable = DataTables("加权计算")
dt_d.DataRows.Clear
For Each zy As String In dt.GetValues("专业组名称")
    Dim ls As List(Of String) = dt.GetValues("面试室", "专业组名称 = \'" & zy & "\'")
    Dim zy_sum As Double = 0
    For Each s As String In ls
        Dim dr As DataRow = dt_d.AddNew
        dr("专业组名称") = zy
        dr("面试室") = s
        Dim sum As Double = dt.Compute("sum(原始成绩)", "专业组名称 = \'" & zy & "\' and 面试室 = \'" & s & "\'")
        Dim count As Double = dt.Compute("count(原始成绩)", "专业组名称 = \'" & zy & "\' and 面试室 = \'" & s & "\'")
        dr("面试室平均值") = sum / count
        zy_sum += dr("面试室平均值")
    Next
    dt_d.ReplaceFor("加权平均值", zy_sum / ls.Count, "专业组名称 = \'" & zy & "\'")
Next
For Each dr As DataRow In dt_d.DataRows
    dr("加权系数") = dr("加权平均值") / dr("面试室平均值")
Next

 


--  作者:hrw68529
--  发布时间:2015/3/5 14:51:00
--  
这段代码放在什么地方,谢谢
--  作者:有点甜
--  发布时间:2015/3/5 14:53:00
--  
 单独做一个按钮计算
--  作者:hrw68529
--  发布时间:2015/3/5 14:54:00
--  
好的


--  作者:hrw68529
--  发布时间:2015/3/5 15:03:00
--  
出现下列错误:请审核:
图片点击可在新窗口打开查看此主题相关图片如下:截图00.png
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2015/3/5 15:05:00
--  
你的列类型不是数值类型?
--  作者:有点甜
--  发布时间:2015/3/5 15:06:00
--  
 原始成绩列,改成数值列,不能是字符列。
--  作者:hrw68529
--  发布时间:2015/3/5 15:07:00
--  
我修改后,又出现这个错误:
图片点击可在新窗口打开查看此主题相关图片如下:截图01.png
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2015/3/5 15:08:00
--  
全部改为高精度小数吧