汇总带中的QRLabelScope1- QRLabelScope5组件用于显示各档成绩的人数及比例,因此还需要在报表界面中通过编程计算出各档成绩的人数。

图6 成绩输出报表界面
表2 成绩输出界面对象的属性设置
类名 |
属性名 |
属性值 |
类名 |
属性名 |
属性值 |
TForm |
Name |
FormPrintAchievement |
TQuickRep |
Name |
QuickRep |
|
|
DataSet |
DMServerDB.ADODataSetAchievement |
TQRDBText |
Name |
QRDBText1 |
TQRDBText |
Name |
QRDBText2 |
Dataset |
DMServerDB.ADODataSetAchievement |
DataSource |
DMServerDB.ADODataSetStudent |
DataField |
StudentID |
DataField |
StudentName |
TQRSysData |
Name |
QRSysData1 |
TQRSysData |
Name |
QRSysData2 |
Data |
qrsDetailCount |
Data |
QrsDate |
用于显示总人数 |
用于显示打印日期 |
细节带中的其他QRDBText对象的设置与QRDBText1类似,只是DataField使用不同的字段名而已,请参考图6中相对应的字段名。其他的都是TQRLabel组件,其Name属性如图6所示,不再一一给出。
3.2 代码设计
⑴ 定义动态填充TComboBox对象Items属性列表值的CreateItems函数,该函数代码请参考前几讲中系统公用模块设计的CreateItems函数。
⑵ 编写FormAchievement的OnShow事件,通过SQL语句完成树型结构的创建、考试类型列表框项目的填充和从Stu.ini文件中读取成绩占比等界面元素的初始化工作,相关代码如下:
procedure TFormAchievement.FormShow(Sender: TObject);
begin
ComboBoxAchievementType.Style := csDropDownList; // 设置列表方式
TreeList := TStringList.Create; // 存放树型结构中间数据
// 动态生成树型结构
with DMServerDB do begin
ADODataSetTree.CommandType := cmdText;
ADODataSetTree.Connection := ADOConnection;
strSQL:='SELECT D.DepartmentID, S.SpecialityID, SP.Jies, C.ClassID, SP.PlanCourseOrder';
strSQL:=strSQL+', C.ClassName, D.DepartmentName, S.SpecialityName, Course.CourseName';
strSQL:=strSQL+' FROM Class C INNER JOIN';
strSQL:=strSQL+' Speciality S ON C.SpecialityID = S.SpecialityID INNER JOIN';
strSQL:=strSQL+' Department D ON S.DepartmentID = D.DepartmentID INNER JOIN';
strSQL:=strSQL+' SpecialityPlan SP ON S.SpecialityID = SP.SpecialityID INNER JOIN';
if (UserType=1) And (Not IsAdministroy) then begin //是教师但不是管理员
strSQL:=strSQL+' CourseTeacher CT ON SP.PlanCourseOrder = CT.PlanCourseOrder INNER JOIN';
|