-- 作者:喜爱易表
-- 发布时间:2006/8/13 16:01:00
-- 用易表.net轻松管理学生成绩(下)(小吴原创)
上次我们介绍了如何建立一张带录入窗口、具备自动计算,自动判断成绩并以不同颜色区分的“考试成绩表”,现在来介绍如果利用这张“考试成绩表”生成成绩通知单及其他一些高级统计功能: 1、利用报表设计制作学生成绩通知单: 1.1、自动生成报表: 在“报表”菜单中,单击“设计报表”→“新建报表”。 在弹出报表设计窗口中的“报表”菜单里选择“自动报表”,后面的操作和前面介绍的录入窗口的设计很相似:在弹出的窗口中取消不想出现在报表中的列名称前的小勾(笔者只留下了姓名、学号、各单科分数及总分),点“确定”,一张简单的报表就生成了,如下图所示: [UploadFile=2004811415295242_1155456040.gif] 1.2、调整报表: 用鼠标调整细节区大小,将其扩大,然后选中整个表格,将其全部向下拖动至细节区,并在表格上方留出一些位置。 点击工具栏上“报表设置”按钮,在弹出的窗口上选择“区域”舌签,只留下“细节区”前的小勾。相关的区域介绍在这个窗口上都有描述,这里不再赘述。 点击工具栏上“插入对象”按钮,在表格上方插入若干对象,做出通知书上固定出现的通知文字。 这样,一张很正规的报表就制作完毕了,如下图所示: [UploadFile=2004811434965991_1155456059.gif] 小提示:在报表设计过程需注意的是对象类型的设置,对于"学生姓名"等需要从数据表里调用数据以及用Today()函数返回打印日期的对象,其对象类型应该设为表达式型,其余为字符串型。(设置方法很简单:双击字段,在弹出的窗口中选择对象类型即可)。 退出报表设计,保存刚才设计的报表,起名为“学生成绩通知单”。 1.3、使用报表: 在易表.net工具栏上点“打印报表”按钮,选择“学生成绩通知单”,在弹出的窗口中点击预览就可以看到效果了。易表可以打印你选定的记录,也可以一次打印全部记录。 通过简单的报表设计弥补了若不掌握宏运用等高级技巧就无法在Excel中批量打印通知单的缺憾,是不是很方便呢? 2、某班某科成绩高级分类统计功能: 统计某班级某科目的平均分、及格率、优秀率是很多教师朋友都需要的,在易表.net里实现起来非常简单,下面利用上期中制作的“学生成绩表”来制作初二年级各班化学成绩的统计: 进入由“表2”改名而来的“单科成绩统计”,按以前介绍的“设计数据表”设计该表,前两列:[班级]、[科目]为字符型列,后九列:[满分]、[原有人数]、[考试人数]、[总分]、[平均分]、[及格人数]、[及格率]、[优秀人数]、[优秀率]为数值型。将[班级]列各行依次写上初二①班~初二⑤班,[科目]列都写上化学,[满分]列都写为100,下面设置其他统计列的刷新公式:
2.1、对于四个人数统计列,我们只需要用一个countfor()函数,它是用来对指定表统计符合条件的记录数,可连续设置多个条件,基本语法是: Countfor(Grid,CompareCol,CompareMode,CompareValue,......) Grid 对该表进行统计,可用表名表示,亦可用位置表示。 CompareCol 进行比较的列,可用列名称表示,亦可用位置表示。 CompareMode 比较方式,包括=、>、<、>=、<=、<>、Like、Instr共8种比较方式。 CompareValue 比较值。 我们可对四个人数统计列设置如下刷新公式: [原有人数]列:countfor(1,"所在班级","=",[班级]) [考试人数]列:countfor(1,"所在班级","=",[班级],[科目],"<>","",[科目],"<>",0) [及格人数]列:countfor(1,"所在班级","=",[班级],[科目],">",[满分]*0.6) [优秀人数]列:countfor(1,"所在班级","=",[班级],[科目],">",[满分]*0.9) 了解了countfor()函数的基本用法后,这些公式一看就明白吧?这里就不一一解释了。(其中的””表示空白) 2.2、对[总分]列设置刷新公式:sumfor(1,[科目],"所在班级","=",[班级]),这里的sumfor()函数是用来对指定表的指定列进行求和的专用函数,用法和countfor()函数一样; 2.3、完成其他列的刷新公式: [平均分]列:round([总分] / [考试人数],2) [及格率]列:format([及格人数] / [考试人数],"0.00%") [优秀率]列:format([优秀人数] / [考试人数],"0.00%") 这三列的公式很好理解,其中round()函数是四舍五入函数,它的第二个参数是保留的小数位数;format()函数是格式化函数,可以用它来定义数据的显示格式,上面[及格率]和[优秀率]列就是用这个函数来定义成显示为保留为2位小数的百分数形式。 现在按一下F6(重新计算)键,怎么样,是不是你要的都出来了?如下图所示: [UploadFile=2004811414239776_1155456093.gif] 3、一次筛选出排名前10名和后10名的记录: 在“考试成绩表”中选出单科或总分排名前10名、后10名的学生,分别进行表扬和督促,相信也是教师朋友们需要的功能,在易表.net里利用SortCol()函数、HideRowsFor()函数和Cell()函数来做一个自定义按钮就可以轻松实现一次筛选出排名两头的记录。下面以设置一个可一次筛选出总分排名前10名、后10名的按钮为例做介绍: 按前面介绍的录入窗口设计方法新建一个录入窗口,新增一个自定义按钮,双击该按钮,在弹出的公式生成器窗口中输入如下公式:SortCol(Grid,"总分排名",1) and HideRowsFor("总分排名",">",10,"总分排名","<",Cell(rows,"总分排名")-9),保存该录入窗口,试一下,是不是实现了你一直想要的功能了呢?其实这串公式并不难理解: SortCol()函数作用是:对指定的表中指定的列进行排序,公式里SortCol(Grid,"总分排名",1)表示对当前表的[总分排名]列按升续排列; Cell(rows,"总分排名")的作用是:返回[总分排名]列最后一行的值; HideRowsFor("总分排名",">",10,"总分排名","<",cell(rows,"总分排名")-9)的作用是:隐藏[总分排名]列大于10,小于最大值减9的记录。 上面的公式连起来就是:对[总分排名]列按升续排列,然后隐藏大于10,小于最大值减9的记录,这也就实现了一次筛选出排名前10名和后10名的记录的功能。 HideRowsFor()是最新的易表.net 10.3 Build 1311里新增的功能函数,对于较早的版本,同样可以利用变量来实现,只是略为麻烦,这里就不做介绍了,具体可以到易表论坛中查看相关帖子,具体见:http://bbs.egridsoft.com/dispbbs.asp?boardID=1&ID=20144 易表.net的的功能还有很多,本文只是从利用易表.net管理学生成绩来揭开其神秘面纱的一角,相信教师朋友看后已有一定启发。 易表.net有丰富的函数,通过嵌套使用可以随需应变满足你各种数据管理要求,而且其函数用法都比较好理解,对于学校、中小企业的数据管理人员来说实是一款不可多得的数据管理好帮手。
|