书城计算机网络Delphi程序设计教程
36209800000032

第32章 数据库应用程序设计(6)

Bands属性是QuickRep组件最重要的属性,用于设置报表的各个部分(称为带区)。该属性为集合型属性,包含6个子属性,分别对应报表的6个带区,这些子属性都为布尔型,若其值为True,则报表拥有相应的带区;若不想要某个带区,则将相应子属性值设置为False。

Bands属性的6个子属性及其含义如表12-9所示。

在带区上可以放置文本或图形的显示组件。

(2)DataSet属性

DataSet属性指明QuickRep组件将从哪里获得数据,可以是一个Table组件,也可以是一个Query组件,取决于程序员在数据库应用程序中使用哪一个数据集组件。

(3)Option属性

Option属性决定报表的特性。该属性为集合型属性,包含3个布尔型子属性:

Firstpageheader、LastPageFooter和Compression,分别决定报表第一页是否打印页眉、报表最后一页是否打印页脚、报表在产生时是否以紧缩方法存储。

(4)Page属性

Page属性用于设置报表的布局。该属性为集合型属性,包含11个子属性。

(5)RecordCount属性和RecordNumber属性RecordCount属性和RecordNumber属性决定打印的进度,RecordCount属性返回报表中记录的个数,而RecordNumber属性返回报表正在打印第几条记录。

2)QuickRep组件的方法

QuickRep组件的方法主要有以下几种。

(1)Preview方法

Preview方法用于生成报表,并且在屏幕上显示预览窗口。

(2)Print方法

Print方法用于打印报表。

(3)PrinterSetup方法

PrinterSetup方法用于显示打印设置对话框。

2.QRBand组件

在报表制作过程中,QRBand组件的重要性仅次于QuickRep组件,它主要用来放置可打印的对象,如后面要讲到QRLabel组件、QRDBText组件等。

在报表设计中,通常不需要专门放置QRBand组件,当设置QuickRep组件的Bands属性时,选用的带区中自动放置一个相应类型的QRBand组件。

QRBand组件的属性主要有以下几个。

(1)BandType属性

BandType属性用于设置带区的类型。该属性为枚举型属性,有11种取值,其中6种和QuickRep组件的Band属性的6个子属性对应,还有另外5种,共决定带区的11种类型。

(2)Frame属性

Frame属性决定带区的边框特性。该属性为集合型属性,包含7个子属性,分别决定带区四周是否带有边框、边框的颜色、边框的线型和线宽。

(3)HasChild属性

HasChild属性决定带区是否含有子带区。在打印报表时,一个带区的子带区紧随它之后打印。

3.QRLabel组件、QRDBText组件和QRSysData组件

QRBand组件不能用来直接打印信息。要打印信息,还需要在QRBand组件中放置可打印的组件,就是本小节要介绍的QRLabel组件、QRDBText组件和QRSysData组件。

1)RLabel组件

QRLabel组件用于在带区内打印固定文本。

QRLabel组件的Caption属性指定要打印的固定文本。

2)QRDBText组件

QRDBText组件用于在带区内打印数据表中的字段。其主要属性有以下几种。

(1)DataField属性

DataField属性指定要打印的字段。

(2)DataSet属性

DataSet属性指定同要打印的数据表相链接的一个数据集。

(3)AutoStretch属性

AutoStretch属性决定QRDBText组件是否进行垂直扩展,以适应显示一个字段(如备注字段)的完整内容。该属性为布尔性属性,若其值为True,则显示一个字段的完整内容,需要时,可以打破页的限制;否则,字段将被裁成组件的大小。

3)QRSysData组件

QRSysData组件用于在带区内打印系统信息,如系统日期、系统时间、当前页号等。其主要属性有以下几种。

(1)Data属性

Data属性指定打印的系统信息的内容。该属性为枚举型属性,有7种取值,其取值及其含义如表12-10所示。

(2)Text属性

Text属性指定系统信息前打印的提示内容。例如,Data属性设置为qrsDate,Text属性可设置为“今天的日期是:”,则打印的结果为:“今天的日期是:2003-11-20”。

4.QRExpr组件

QRExpr组件用来在报表生成时计算并打印一个表达式的值。其主要属性有以下几种。

Expression属性指定一个需要计算的表达式。

在对象检查器中,单击该属性值栏右端的【…】按钮,打开【ExpressionWizard】对话框,编辑需要的表达式。

12.5.2报表的制作

Delphi提供了两种制作报表的方法,用户可以使用报表向导或报表模板制作报表,也可以自己手工制作报表。这里以制作图书管理系统中读者查询结果报表为例,介绍较灵活的手工制作报表的方法。

1.创建报表窗体

在图书管理系统项目Project1中,新建一个窗体,窗体上放置一个Table组件、一个DataSource组件和一个QuickRep组件。窗体和组件的属性设置如表12-11所示。

2.连接报表和数据库

设置组件DataSourcedzmc的DataSet属性为Tabledzmc,设置组件QuickRepdzmc的DataSet属性为Tabledzmc,将报表和数据库连接起来。

3.设置QuickRep组件的带区

根据报表要求,设置报表的带区。假设设置5个带区:标题区、表头区、表体区、摘要区和页脚区,将QuickRep组件的Bands属性的有关子属性设置为True。

完成了以上设置的报表窗体如图12-46所示。

4.放置可打印组件

根据报表格式要求,放置可打印组件。假设标题区放置一个QRLabel组件,表头区放置5个QRLabel组件,表体区放置5个QRDBText组件,摘要区和页脚区各放置一个QRSysData组件。它们的属性设置如表12-12所示。

5.添加程序代码

程序需要添加如下代码:

单元文件Unit3的implementation段中添加usesUnit9。

【读者信息查询】窗体中,添加一个【生成报表】按钮,并添加它的单击事件处理代码:

为在打印前预览报表,可在报表窗体中添加一个【预览报表】按钮,单击该按钮,可预览报表,其事件处理代码为:

设计完成后,保存文件,编译、运行程序,在【读者信息查询】窗口中,单击【生成报表】按钮,打开报表窗口,如图12-48所示。

单击【预览报表】按钮,可以预览报表,如图12-49所示。

要正式打印,只需添加适当的对象,编写对象的事件处理代码,调用QuickRep组件的Print方法即可实现,读者自己不难完成。

习题12

1.数据库应用程序在数据库系统中的地位是什么?

2.Delphi的数据库功能体现在哪几个方面?BDE起什么作用?如何配置BDE?

3.Delphi中最常用的数据库组件有哪两大类?各起什么作用?

4.Table组件和Query组件在使用中有什么区别?

5.常用的SQL语句有哪些?在对象检查器中和程序代码中如何设置Query组件的SQL属性?

6.常用的数据控制组件有哪些?各有什么用途?

7.Delphi的数据库实用工具有哪些?DatabaseDesktop有什么用途?如何使用?

8.Delphi数据库应用程序的设计步骤有哪些?试用Paradox7数据库设计一个通讯录管理的小程序,对通讯录的条目具有查询、登记、修改、删除的功能。

9.生成报表要用哪些组件?各有什么用途?试设计生成通讯录报表的程序。