以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  班级平均分如何计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1305)

--  作者:老有所乐
--  发布时间:2008/12/2 23:44:00
--  班级平均分如何计算
“上报教育局成绩表”中的[班级平均分]列是从“学生各科成绩表”中按年级、学科统计班级的平均分,请教该计算代码如何写?谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学生成绩统计分析表.table


--  作者:czy
--  发布时间:2008/12/3 0:27:00
--  
DataColChanged事件代码

If e.DataCol.Name = "学科" Then
    If e.NewValue Is Nothing Then
        e.DataRow("班级平均分") = Nothing
    Else
        Dim Avg As Single = Math.Round(DataTables("学生各科成绩表").Compute("Avg(" & e.DataRow("学科") & ")","[班级] = \'" & e.Datarow("班级") & "\' And [年级] = \'" & e.DataRow("年级") & "\'" ),1)
        if Avg > 0 then
            e.DataRow("班级平均分") = Avg
        End if
    End If
End If
[此贴子已经被作者于2008-12-3 0:29:06编辑过]

--  作者:czy
--  发布时间:2008/12/3 0:34:00
--  
年级和班级两列的平均分

If e.DataCol.Name = "学科" Then
    If e.NewValue Is Nothing Then
        e.DataRow("年级平均分") = Nothing
        e.DataRow("班级平均分") = Nothing
    Else
        Dim Avg As Single = Math.Round(DataTables("学生各科成绩表").Compute("Avg(" & e.DataRow("学科") & ")","[班级] = \'" & e.Datarow("班级") & "\' And [年级] = \'" & e.DataRow("年级") & "\'"),1)
        if Avg > 0 then
            e.DataRow("班级平均分") = Avg
            e.DataRow("年级平均分") = Math.Round(DataTables("学生各科成绩表").Compute("Avg(" & e.DataRow("学科") & ")","[年级] = \'" & e.Datarow("年级") & "\'"),1)
        End if
    End If
End If

--  作者:老有所乐
--  发布时间:2008/12/3 7:05:00
--  

非常感谢C版主深夜解答!


--  作者:老有所乐
--  发布时间:2008/12/4 7:47:00
--  

请教C版主2、3楼的代码可否改成按钮公式,如可改应如何改?谢谢!


--  作者:老有所乐
--  发布时间:2008/12/4 16:08:00
--  
顶一下
--  作者:gdtgl
--  发布时间:2008/12/4 19:57:00
--  

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



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


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


--  作者:gdtgl
--  发布时间:2008/12/4 20:03:00
--  
\'在"上报教育局成绩表"这个表中生成各个年级的各个班每一科的行
for i as integer  = 0 to tables("学科").rows.count -1
   Dim lianjis As List(Of String)
   lianjis = DataTables("学生各科成绩表").GetUniqueValues("", "年级") \'取所有的年级
       For Each lj As String In lianjis
       Dim bianji As List(Of String)
       bianji = DataTables("学生各科成绩表").GetUniqueValues("", "班级") \'取所有的班级
             For Each bian As String In bianji
                 Dim dr As DataRow = DataTables("上报教育局成绩表").AddNew()
                     dr("年级") = lj \'在年级列中写入年级值
                     dr("班级") = bian
                     dr("学科") = tables("学科").rows(i)("学科") \'在学科列中写入语文,数学等等
             next
        Next
Next

\'重算"班级平均分"中的计算代码
DataTables("上报教育局成绩表").DataCols("班级平均分").Recalc()
[此贴子已经被作者于2008-12-4 20:13:25编辑过]

--  作者:老有所乐
--  发布时间:2008/12/4 22:20:00
--  
谢谢gdtgl兄弟!你设计的比我想要的更好。