组头中放置了10个TQRLabel组件和4个TQRDBText组件(专业、班级、姓名和考试类别),4个TQRDBText组件的DataSet属性设置为FormSearchAchievement.ADODataSet,DataField属性设置为对应的字段名(参考图5)。
2.2.2 代码设计
⑴ 因需要在报表中显示平均成绩,因此需要在窗体类的private部分定义存放平均值的数组,相关代码如下:
private
GroupAverage : Array [0..3] of Double; // 平均
⑵ 设置组头QRGroup1的BeforePrint ()事件,用于对不同的学生及学期进行变量的初始值及计算课程的开设学年,相关代码如下:
procedure TFormPrintReportCard.QRGroup1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
Var
Year : Integer;
begin
// 计算该课的开设学年,如2005-2006(1)或2005-2006(2)
Year:=FormSearchAchievement.ADODataSet.FieldValues['EntranceYear'];
Year:=Year+(FormSearchAchievement.ADODataSet.FieldValues['Term']-1) Div 2;
QRLabelterm.Caption := IntToStr(Year)+'-'+IntToStr(Year+1)
+'('+IntToStr(((FormSearchAchievement.ADODataSet.FieldValues['Term']+1) Mod 2)+1)+')';
for Year:= 0 to 3 do
GroupAverage[Year] := 0; // 四个平均成绩清零 NumCount := 0; // 该学生本学期课程数清零
|