Foxtable(狐表)用户栏目专家坐堂 → [求助]加权计算如何写代码


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

主题:[求助]加权计算如何写代码

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


加好友 发短信
等级:五尾狐 帖子:1128 积分:8702 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/5 14:27:00 [只看该作者]

数据库密码为:123456

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


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

 用下面的代码,记得重新输入数据,或者重置列一下列

 

If e.DataCol.name="天数" OrElse e.DataCol.name="面试室" Then
    If e.DataRow.IsNull("天数")=False AndAlso e.DataRow.IsNull("面试室")=False Then
        Dim zgf1, zgf2, zdf1, zdf2 As Double
        Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'", "本场面试成绩")
        zgf1 = drs(drs.Count-1)("本场面试成绩")
        zgf2 = drs(drs.Count-2)("本场面试成绩")
        zdf1 = drs(0)("本场面试成绩")
        zdf2 = drs(1)("本场面试成绩")
        Dim sum As Double = DataTables("笔试成绩").Compute("sum(本场面试成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("面试室平均值") = (sum - zgf1 - zgf2 - zdf1 - zdf2) /( drs.Count - 4)

        e.DataRow("加权平均值") = e.DataTable.Compute("avg(面试室平均值)")
        e.DataRow("加权系数") = e.DataRow("加权平均值")/e.DataRow("面试室平均值")
        e.DataRow("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数 = '" & e.DataRow("天数") & "' and 面试室 = '" & e.DataRow("面试室") & "'")
       
    End If
Else If e.DataCol.Name = "面试室平均值" Then
    For Each dr As DataRow In e.DataTable.DataRows     
        dr("加权平均值") = e.DataTable.Compute("avg(面试室平均值)")
    Next

    e.DataRow("加权系数") = e.DataRow("加权平均值") / e.DataRow("面试室平均值")
End If


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


加好友 发短信
等级:五尾狐 帖子:1128 积分:8702 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/5 15:48:00 [只看该作者]

可以了,谢谢甜总

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


加好友 发短信
等级:五尾狐 帖子:1128 积分:8702 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2014/5/8 8:36:00 [只看该作者]

有点甜老师:今天测试数据时,又遇到一个问题,当某个考生缺考时,是没有本场面试成绩的,那么计算本面试室的“面试室平均值”时,就不应该算上这个缺考的考生,下列代码应如何修改,谢谢
If e.DataCol.name="天数" OrElse e.DataCol.name="面试室"  Then
    If e.DataRow.IsNull("天数")=False AndAlso e.DataRow.IsNull("面试室")=False  Then
        Dim zgf1, zgf2, zdf1, zdf2 As Double
        Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'", "本场面试成绩")
        zgf1 = drs(drs.Count-1)("本场面试成绩")
        zgf2 = drs(drs.Count-2)("本场面试成绩")
        zdf1 = drs(0)("本场面试成绩")
        zdf2 = drs(1)("本场面试成绩")
        Dim sum As Double = DataTables("笔试成绩").Compute("sum(本场面试成绩)","天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "'")
        e.DataRow("面试室平均值") = Round2((sum - zgf1 - zgf2 - zdf1 - zdf2) /( drs.Count - 4),4)
        e.DataRow("加权平均值") = Round2(e.DataTable.Compute("avg(面试室平均值)"),4)
        e.DataRow("加权系数") = Round2(e.DataRow("加权平均值")/e.DataRow("面试室平均值"),4)
        e.DataRow("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数 = '" & e.DataRow("天数") & "' and 面试室 = '" & e.DataRow("面试室") & "'")
        
    End If
Else If e.DataCol.Name = "面试室平均值" Then
    For Each dr As DataRow In e.DataTable.DataRows      
        dr("加权平均值") = Round2(e.DataTable.Compute("avg(面试室平均值)"),4)
    Next
    e.DataRow("加权系数") = Round2(e.DataRow("加权平均值") / e.DataRow("面试室平均值"),4)
End If

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/5/8 8:49:00 [只看该作者]

还有,如果总共不超过四个考生,楼主按什么规则计算?


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/5/8 8:50:00 [只看该作者]

Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数='" & e.DataRow("天数") & "' and 面试室='" & e.DataRow("面试室") & "' And 本场面试成绩 Is Not Null", "本场面试成绩")

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