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


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

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

帅哥哟,离线,有人找我吗?
大红袍
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | 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")

 


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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 11:05:00 [显示全部帖子]

笔试成绩 表的数据有问题,你要考虑如果考试不足4人、2人的情况,平均分怎么算。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 11:11:00 [显示全部帖子]

 那就不会有错误提示。代码我测试没问题。

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


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

 先删除之前的错误数据。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 11:47:00 [显示全部帖子]

 什么叫做即时计算?你需要计算的时候,点一下按钮即可。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 11:54:00 [显示全部帖子]

以下是引用hrw68529在2015/5/25 11:52:00的发言:
点按钮后,只出现职位代码、面试室、分组,但面试室平均值、加权平均值、加权系数,不出现,必须得关闭软件,再重新打开,才行,什么原因?

 

不可能


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/25 14:09:00 [显示全部帖子]

 我叫你先删除原来的数据,然后再运行代码啊,或者你加一句

 

DataTables("加权计算").DataRows.Clear

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

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

 回到顶部
总数 11 1 2 下一页