Foxtable(狐表)用户栏目专家坐堂 → [求助]如何按天数进行分别求值?


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

主题:[求助]如何按天数进行分别求值?

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


加好友 发短信
等级:五尾狐 帖子:1116 积分:8608 威望:0 精华:0 注册:2012/7/10 9:09:00
[求助]如何按天数进行分别求值?  发帖心情 Post By:2015/5/25 8:49:00 [只看该作者]

下边一段代码,分2天进行,每天的成绩分别求面试室平均值,加权平均值,加权系数,现在是2天一起,如何修改代码,请指教
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("面试室") & "'And 本场面试成绩 Is Not Null", "本场面试成绩")
        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("面试室平均值") = Format((sum - zgf1 - zgf2 - zdf1 - zdf2) /( drs.Count - 4),"0.0000")
        e.DataRow("加权平均值") = Format(e.DataTable.Compute("avg(面试室平均值)"),"0.0000")
        e.DataRow("加权系数") = Format(e.DataRow("加权平均值")/e.DataRow("面试室平均值"),"0.0000")
        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("加权平均值") = Format(e.DataTable.Compute("avg(面试室平均值)"),"0.0000")
    Next
    e.DataRow("加权系数") = Format(e.DataRow("加权平均值") / e.DataRow("面试室平均值"),"0.0000")
End If

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


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

dr("加权平均值") = Format(e.DataTable.Compute("avg(面试室平均值)"),"0.0000")
这一句怎么改??????

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 9:15:00 [只看该作者]

 dr("加权平均值") = Format(e.DataTable.Compute("avg(面试室平均值)", "天数='" & e.DataRow("天数") & "'"),"0.0000")

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 9:15:00 [只看该作者]

问问题,请上传具体例子。

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


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

上例子:在加树计算表属性中,请修改。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:面试登分系统_201505250952.zip



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


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

加权计算表属性中修改,现在是不能按天进行计算,

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 10:02:00 [只看该作者]

 数据库发上来,同时说明怎么计算。
[此贴子已经被作者于2015/5/25 10:02:25编辑过]

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


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

数据库:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数据库.zip
计算数据:
(1)面试室平均值:按天数、按面试室分别去掉2个最高分,去掉2个最低分,然后计算每个面试室剩下人员的“面试室平均值”;

(2)加权平均值:按天,计算出“面试室平均值”的平均值;
(2)加权系数:按天,将“加权平均值”除以“面试室平均值”


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 10:38:00 [只看该作者]

思路有问题,不要在Datacolchanged事件计算。

 

你这样适合直接填充后计算,做个按钮

 

systemReady = False
Dim f As New Filler
f.SourceTable = DataTables("笔试成绩") '指定数据来源
f.SourceCols = "天数,分组,面试室,是否加权" '指定数据来源列
f.DataTable = DataTables("加权计算") '指定数据接收表
f.DataCols = "天数,分组,面试室,是否加权" '指定数据接收列
f.Filter = "是否加权 = true"
f.ExcludeExistValue = True
f.Fill() '填充数据

Dim zgf1, zgf2, zdf1, zdf2 As Double
Dim dt As DataTable = DataTables("加权计算")
For Each dr As DataRow In dt.DataRows
    Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数='" & dr("天数") & "' and 面试室='" & dr("面试室") & "'And 本场面试成绩 Is Not Null", "本场面试成绩")
    zgf1 = drs(drs.Count-1)("本场面试成绩")
    zgf2 = drs(drs.Count-2)("本场面试成绩")
    zdf1 = drs(0)("本场面试成绩")
    zdf2 = drs(1)("本场面试成绩")
    Dim sum As Double = DataTables("笔试成绩").Compute("sum(本场面试成绩)","天数='" & dr("天数") & "' and 面试室='" & dr("面试室") & "'")
    dr("面试室平均值") = Format((sum - zgf1 - zgf2 - zdf1 - zdf2) /( drs.Count - 4),"0.0000")
    dr("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数 = '" & dr("天数") & "' and 面试室 = '" & dr("面试室") & "'")
Next
For Each dr As DataRow In dt.DataRows
    dr("加权平均值") = Format(dt.Compute("avg(面试室平均值)", "天数='" & dr("天数") & "'"),"0.0000")
    dr("加权系数") = Format(dr("加权平均值")/dr("面试室平均值"),"0.0000")
Next
systemReady = True


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


加好友 发短信
等级:五尾狐 帖子:1116 积分:8608 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2015/5/25 11:02:00 [只看该作者]

按你所讲,把代码复制进去后,出现以下情况,

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


 回到顶部
总数 21 1 2 3 下一页