Foxtable(狐表)用户栏目专家坐堂 → [求助]子表如何引用父表数据,并在父表里进行计算,再赋值回子表?


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

主题:[求助]子表如何引用父表数据,并在父表里进行计算,再赋值回子表?

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


加好友 发短信
等级:童狐 帖子:277 积分:2437 威望:0 精华:0 注册:2011/8/28 12:23:00
[求助]子表如何引用父表数据,并在父表里进行计算,再赋值回子表?  发帖心情 Post By:2022/9/5 3:14:00 [只看该作者]

成绩表的语文标准分为:500 + 100 * ([语文] - Avg([语文]))/StDev([语文])
想实现的效果是(以张三为例)
87+12=99之后,在成绩表里进行标准分计算,并把得到的标准分赋值到“错漏明细”的语文标准分里
其实就是让学生知道,如果空的题做了,错的题做了,相应会有什么成绩

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



图片点击可在新窗口打开查看此主题相关图片如下:2022-09-05.png
图片点击可在新窗口打开查看




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


加好友 发短信
等级:超级版主 帖子:111402 积分:567080 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/5 8:58:00 [只看该作者]

没看懂,请举例说明一下,比如张三和李四,按什么公式进行计算,正确结果是多少?

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


加好友 发短信
等级:童狐 帖子:277 积分:2437 威望:0 精华:0 注册:2011/8/28 12:23:00
  发帖心情 Post By:2022/9/5 12:14:00 [只看该作者]

父表的标准分是:500 + 100 * ([语文] - Avg([语文]))/StDev([语文])算出来的
就是: 500 + 100 * ([87]- Avg([87,67……102,86]))/StDev([[87,67……102,86]])=521.06
——
而子表的标准分希望的是(以语文为例)
500 + 100 * ([87+12]- Avg([(87+12),67……102,86]))/StDev([[(87+12),67……102,86]])=596.48
——
目的就是告诉张三,语文那12分不丢的话,你可以拿到596.48分



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


加好友 发短信
等级:超级版主 帖子:111402 积分:567080 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/5 13:40:00 [只看该作者]

这种情况没有办法直接使用表达式计算。

方法1、在子表每个科目增加一个辅助列,比如列名叫【语文未扣分】,这个列等于父表语文+子表的语文求和。然后根据辅助列进行计算
2、使用代码计算

话说回来这种统计有点自欺欺人吧,【语文那12分不丢的话,你可以拿到596.48分】,还不如直接告诉学生一分都不丢的话,岂不都是满分了!

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


加好友 发短信
等级:童狐 帖子:277 积分:2437 威望:0 精华:0 注册:2011/8/28 12:23:00
  发帖心情 Post By:2022/9/5 14:08:00 [只看该作者]

有意义的,标准分本来就是衡量一个成绩在一个范围内的分值,现在有的省份还在用做高考成绩统计
那12分是没有做,空着丢的,我算出来后,还得让对方明白
(596.48-521.06)/12=6.285,多拿1分可以多6.285标准分

这个帖子太老,然后可能他的算法更精确,我暂时用不到这么精确的算法(我的算法公式是从excel里改过来的)
[此贴子已经被作者于2022/9/5 14:11:28编辑过]

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


加好友 发短信
等级:童狐 帖子:277 积分:2437 威望:0 精华:0 注册:2011/8/28 12:23:00
  发帖心情 Post By:2022/9/5 22:25:00 [只看该作者]

版主你好,我用了取巧的办法做是做出来了,但是用代码写3楼的的公式应该怎么写才对?就是以下红色部分
子表的datacolchanged
Select Case e.DataCol.Name
Case "语文" , "数学", "英语"
Dim dr As DataRow
Dim dt As DataTable = DataTables("成绩")
dr = dt.Find("学号 = '" & e.DataRow("学号") & "'")
If dr IsNot Nothing Then
Dim oldyw As Double = dr("语文")
Dim newyw As Double = dr("语文") + e.DataRow("语文")
dr("语文") = newyw
e.DataRow("标准分_语文") = dr("标准分_语文")
dr("语文") = oldyw
End If
End Select

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


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


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


加好友 发短信
等级:童狐 帖子:277 积分:2437 威望:0 精华:0 注册:2011/8/28 12:23:00
  发帖心情 Post By:2022/9/6 0:30:00 [只看该作者]

谢谢,看完之后,感觉取巧也挺好的……
我试试

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


加好友 发短信
等级:童狐 帖子:277 积分:2437 威望:0 精华:0 注册:2011/8/28 12:23:00
  发帖心情 Post By:2022/9/6 1:15:00 [只看该作者]

ok,一开始感觉很复杂,照着链接中的链接,http://www.foxtable.com/help/topics/0545.htm
搞定了
谢谢版主
Dim p As Integer = Tables("成绩").Cols("语文").Index '获得数量列的位置
Dim n As Integer = Tables("成绩").Rows.Count
Dim x As Double = Tables("成绩").Aggregate(AggregateEnum.Average, 0, p, n - 1, p)
Dim v As Double = Tables("成绩").Aggregate(AggregateEnum.Std, 0, p, n - 1, p)
Dim y As Double = 500 + 100 * (87 - x) / v
Output.Show(y)
[此贴子已经被作者于2022/9/6 1:16:21编辑过]

 回到顶部