Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:统计问题

1楼
abcdzabcdz 发表于:2009/3/20 9:42:00
统计问题 


说明:

1、以“语文”成绩为例,将语文优生(简称“语优”)分为四类(即A、B1、B2、C),现欲分班级统计“语优”中“A”优有多少人、“B1”优有多少人、“B2”优有多少人、“C”优有多少人;数学、英语、总分依次类推。

2、物理/政治的“A优”为“物优”与“政优”中“A”优数之和,其它类推。  

3、最后一行,将统计情况汇总。

4、若同时能用“手工编码”和DataColChanged事件编程等方式一题多解为最好,方便学习。

外:“优生统计”表中为根据“成绩及优生划分”表统计出的正确数据,供参考。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计问题.table

2楼
czy 发表于:2009/3/20 10:14:00

举例好象不恰当,因为表中没有语文数据。

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("成绩及优生划分")
If e.DataCol.Name = "班级" And e.DataRow.IsNull("班级") = False Then
    dr("总分_A优") = dt.Compute("Count(姓名)", "[总优] = 'A' And [班级] = '" & dr("班级") & "'" )
    dr("总分_B1优") = dt.Compute("Count(姓名)", "[总优] = 'B1' And [班级] = '" & dr("班级") & "'" )
    dr("总分_B2优") = dt.Compute("Count(姓名)", "[总优] = 'B2' And [班级] = '" & dr("班级") & "'" )
    dr("总分_C优") = dt.Compute("Count(姓名)", "[总优] = 'C' And [班级] = '" & dr("班级") & "'" )
End If

[此贴子已经被作者于2009-3-20 10:27:58编辑过]
3楼
czy 发表于:2009/3/20 10:16:00
只做了个总分优,其它自己参照做吧.

最后行你应该用汇总模式。
4楼
abcdzabcdz 发表于:2009/3/20 11:59:00
谢谢!
5楼
abcdzabcdz 发表于:2009/3/22 19:50:00
 

对2楼语句深入思考:

思考1、计算“总分”中“A”优与“B1”优人数之和(假设计存在“总分_AB1优”):

dr("总分_AB1优") = dt.Compute("Count(姓名)", "[总优] = 'B1' And [班级] = '" & dr("班级") & "' Or [总优] = 'A' And [班级] = '" & dr("班级") & "'" )

计算“A”、“B1”、“B2”优人数之和:

dr("总分_AB1B2优") = dt.Compute("Count(姓名)", "[总优] = 'B1' And [班级] = '" & dr("班级") & "' Or [总优] = 'B1' And [班级] = '" & dr("班级") & "' Or [总优] = 'A' And [班级] = '" & dr("班级") & "'" )

思考2、高中分文理科,统计成绩时常把“物理与政治”科数据放在一起统计(理科无政治学科,文科无物理学科),假设计有一列“物理/政治_A优”,我将上述语句修改为:

dr("物理/政治_A优") = dt.Compute("Count(姓名)", "[物优] = 'A' And [班级] = '" & dr("班级") & "' Or [政优] = 'A' And [班级] = '" & dr("班级") & "'" )

两种思维方式一致,结果大相径庭(思考1测试数据正确,思考2测试数据错误),真让人想不通????问题到底出在哪里呢????

6楼
czy 发表于:2009/3/22 19:56:00
道理非常简单,再思考下第二个语句为什么不行,相信你应该很快就能明白的。
7楼
abcdzabcdz 发表于:2009/3/22 20:04:00

还是不太明白?是不是[物优]在前已提前定位?

怎样修改第二个语句才能达到预期目的?

8楼
czy 发表于:2009/3/22 20:49:00
Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("成绩及优生划分")
Dim Str As String = "And [班级] = '" & dr("班级") & "'"
If e.DataCol.Name = "班级" And e.DataRow.IsNull("班级") = False Then
    dr("物理/政治_A优") = dt.Compute("Count(姓名)", "[物优] = 'A'" & Str) + dt.Compute("Count(姓名)", "[政优] = 'A'" & Str)
End If
共8 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .07031 s, 3 queries.