以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何设计“单项平均”公式?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1069)

--  作者:hbfnmxb
--  发布时间:2008/11/7 14:43:00
--  如何设计“单项平均”公式?
这个表是用易表做的模,现在想全部采用狐表,以提高计算速度,第一个“你认为教师的工作态度”一列中的合计,我计算出来了,公式也会,“单项平均”我公式就不会了,大人们看看。“单项平均”公式的要求是这样的:相同教师的合计分是不同的,这里要求有多少个相同教师,它们的合计要相加,所得之和要除相同教师的个数,所得结果添在“单项平均”中。看看这个公式怎么写。谢谢。

第一个是易表文件
第二个是我要做的狐表文件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:易表学生评教分析系统2008.11.rar

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学生评教表.rar


提示:题目要简明扼要!
[此贴子已经被smileboy于2008-11-7 15:56:16编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/11/7 15:18:00
--  

虽然可以实现,但是表结构有问题,这是一个原始评分数据表,通常不应该在这里头进行统计,而是有一个单独的统计表,同级每一个教师的平均得分和排名。


另外,请不要用这么复杂的列名,表头应该考虑用列标题来实现。

 


--  作者:狐狸爸爸
--  发布时间:2008/11/7 15:26:00
--  

我利用命令窗口设置了两项的计算,大概3秒左右可以出结果,其余的可以自己加进去。

 

Dim Names As List(Of String)

Names = DataTables("学生评分表").GetUniqueValues("","教师姓名")

For Each Name As String In Names

   Dim Sum As Double = DataTables("学生评分表").Compute("Sum(你认为老师的教学态度_合计)","[教师姓名] = \'" & Name & "\'")

   Dim Count As Integer = DataTables("学生评分表").Compute("Count(教师姓名)","[教师姓名] = \'" & Name & "\'")

   Dim Drs As List(Of DataRow) = DataTables("学生评分表").Select("[教师姓名] = \'" & Name & "\'")

   Dim Avg As Double = Math.Round(Sum / Count,3)

   For Each dr As DataRow In Drs

       dr("你认为老师的教学态度_单项平均") = avg

   Next

 

  Sum = DataTables("学生评分表").Compute("Sum(你认为老师创设的课堂情景_合计)","[教师姓名] = \'" & Name & "\'")

  Count = DataTables("学生评分表").Compute("Count(教师姓名)","[教师姓名] = \'" & Name & "\'")

  Drs = DataTables("学生评分表").Select("[教师姓名] = \'" & Name & "\'")

  Avg = Math.Round(Sum / Count,3)

  For Each dr As DataRow In Drs

      dr("你认为老师创设的课堂情景_单项平均") = avg

  Next

Next

不过这样的设计始终是有问题的,应该有单独的统计表,否则计算的耗时可以忍受,但是存盘就慢多了,可能要几分钟,因为foxtable只保存修改过的行,所以日常的应用存盘效率高过易表,但是你这样设计的话,等于每次计算后,11万行全部被修改过,存盘的速度可想而知。


--  作者:hbfnmxb
--  发布时间:2008/11/7 15:28:00
--  

不太明白,因为对狐表还不是太懂,总认为是易表的升级,但做起来,却不如易表易。那么应该怎么设计。讲得再具体些。谢谢。


--  作者:狐狸爸爸
--  发布时间:2008/11/7 15:30:00
--  
看3楼啊,我给了代码,直接在命令窗口执行即可算出其中两个单项平均。
[此贴子已经被作者于2008-11-7 15:33:14编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/11/7 15:34:00
--  
最好改变结构,如果不想改,将三楼的代码设计成一个按钮,以后但及这个按钮计算单项平均。
--  作者:hbfnmxb
--  发布时间:2008/11/7 15:36:00
--  
在“教师得分表”中“教学态度_得分”这一列怎样把“学生评分表”中“你认为老师的教学态度_单项平均”这一列的数据引用过来??谢谢!!!
--  作者:狐狸爸爸
--  发布时间:2008/11/7 15:43:00
--  

你应该删除学生评分中的所有单项平均列,直接在教师得分表中加上单项平均栏目,在这里进行统计。

好的表结构是一个好系统的基础,就像房子的地基。


--  作者:hbfnmxb
--  发布时间:2008/11/7 15:53:00
--  

提醒的对,那么用三楼的代码,需要改些什么??


--  作者:smileboy
--  发布时间:2008/11/7 15:55:00
--  
还是好好看帮助吧,打好基础才是主要的。