登陆注册
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.生成报表要用哪些组件?各有什么用途?试设计生成通讯录报表的程序。

同类推荐
  • 中文版AutoCAD2005辅助设计宝典

    中文版AutoCAD2005辅助设计宝典

    本书全面、详细地介绍了中文版AutoCAD2005的特点、功能以及使用方法和技巧。全书共分11章,前九章分别介绍了利用中文版AutoCAD2005进行辅助设计的方法和技巧,最后两章讲解了若干综合实例。
  • 创业在微软

    创业在微软

    身处软件巨擘微软之中,何来“创业”二字?本书详尽勾勒了微软亚洲工程院(ATC)的成长历程,披露了工程院人在“创业”过程中不为人知的种种酸甜苦辣,生动展现了工程院的独特文化,并从另一个角度展现了其领袖人物张宏江博士的心路历程和管理思想。
  • 研究性学习丛书-电脑知识

    研究性学习丛书-电脑知识

    本书对电脑知识有一个全面详细的介绍,会对读者的电脑知识进行提高。
  • 下一代互联网

    下一代互联网

    本书系统介绍了下一代互联网的进展情况,包括下一代互联网的概念解析,国内外下一代互联网的最新发展情况,下一代互联网的关键技术进展,以及各国发展下一代互联网的政策计划。最后分析了下一代互联网对未来社会的影响,提出我国发展下一代互联网的政策建议等。全书共6章,包括互联网发展历史和现状,下一代互联网基本概念,下一代互联网研究最新进展,下一代互联网发展现状,我国发展下一代互联网现状,发展下一代互联网战略建议。
  • 领导干部信息化基础

    领导干部信息化基础

    本书共分6章,分别介绍了计算机网络综述;信息化的三个主要领域,即电子政务(政府信息化)、企业信息化和电子商务;PowerPoint2000中文演示文稿等内容。
热门推荐
  • 大佬总想养我怎么办

    大佬总想养我怎么办

    仙界出了一件大事。六御宫的大人下凡给别人牵红线了!亦瑶大人勤勤恳恳地为别人牵红线,奈何总有欲图不轨之人想阻拦。第一个小世界。女人刚想出门牵线,男人薄凉的眸子望了过来,旋即她被压在墙上。亦瑶“我还要工作,别拦我。”大佬低头,声音带着蛊惑人心的沙哑“我养你。”“……”第二个小世界。女人低头纠结地看着被牵着的手“我要去牵线了。”大佬危险地眯了眯眸子“有我红线的吗?”亦瑶认真肯定“没有。”大佬冷静地看着一堆气运之子嗷嗷待哺地等着亦瑶牵线,皱眉将女人揽入怀里。“你骗人,你有。”男人从她的素白手腕处轻巧地抽出一根泛着光的红线。“小骗子,红线在你那里。”亦瑶“!!!”
  • 唯世传

    唯世传

    一只以嗜血生存的过薨罂,是贵族的吸血鬼,也是皇位的继承人。她们家族最痛恨的就是卑鄙的人类,就因为”神佑学院“的招生,所有的怪物与人类都不屑于顾,长途奔驰到了非蔑森林进行招生考核,可恶的人类为了入学使出了卑贱的手段杀害了她数百名的同胞!面对这样的抉择,过薨罂会怎么做?对孝幽城的挑衅,她会继续无动于衷吗?在一起了?让我们敬请期待吧......
  • 嫡女倾城:草包大小姐

    嫡女倾城:草包大小姐

    她是21世纪超级神医,一朝穿越,成了王府的草包大小姐?想要伤害我的人,嘿,先过了我夏无雪这关!人不犯我我不犯人,人若犯我我必十倍奉还!草包?废柴?这些词汇留给你们这些愚蠢的人类!努力修炼为护家,岂料却被一只跟屁虫黏上了?某无赖:“小雪儿,不要扔下我!”某雪一边狂吐:“我跟你不熟!”绝无仅有的萌宠,伙伴七枚,美男什么的看我信手沾来!魔王在手,天下我有!她,还需要惧怕谁的议论纷纷吗?《嫡女倾城:草包大小姐》粉丝群号:104822967想加本沫的在这里:2178293099(私账给你们啦~)验证随便一个书中人物就好咯~
  • 科技狂人异界游

    科技狂人异界游

    科技天才杨廷,在做时空跳跃的实验时,弄错了时空坐标,穿越到了异界一个修真废物身上。最主要的是和他一起穿越的还有自己一手缔造的科技王国昆仑大厦!这下热闹了,在这个人人修武,实力为尊的异世界,他将会怎样走出一条怎样的崛起之路?丹药?神器?我的都是批量生产。啥?你是武学奇才、修炼高手?还会飞?,不怕,老子有导弹、氢弹、原子弹!看我打不死你!杨廷出品,必属精品!杨廷科技,天下无敌!杨廷,这个名字必将成为异世界的禁忌!让整个异世界为之震颤!
  • 佛说弥勒下生经

    佛说弥勒下生经

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 潜梦追忆

    潜梦追忆

    一场被埋藏多年的实验,一个曾经的希望的之子,十年前到底发生了什么,为什么,比绝望更可怕的,是希望姬千面的过去和未来已经被她亲手埋葬,从十组成员消失的那一天,她便没有了留恋,找到并公布答案是她存在的最后意义直到最后一秒,这个想法也从未改变,我没有未来,如果必须说的话,那么,我的未来是无边无际的绝望,虽然我有过留恋,但,那不至于让我放下
  • 公历2213

    公历2213

    阿诺特和他的合作伙伴开启了永基因生计划,在一番努力下得到了以昆丁为首的富豪们的帮助,但是事情并没有看上去那么简单,螳螂捕蝉黄雀在后,看似平淡的生活背后暗藏杀机,这个世界真的要沦为富人的私有财产吗?未来将何去何从?未来会更好吗?战争已经不知不觉悄悄打响。作品灵感来自圣经和推背图,人名地名纯属虚构,不存在攻击任何组织和团体行为。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 神葬天绝

    神葬天绝

    天绝岛九天十地,封印之始。一个少年,走了出来。一切就这样开始
  • 在漫威世界的安布雷拉

    在漫威世界的安布雷拉

    穿越到漫威世界的他,又该何去何从。灭霸:他就是世界的恶,罪恶的源泉。钢铁侠:我的钢铁侠军团面对他的丧尸海海显的太无力了,我需要更多,不...要海量的钢铁侠。死亡女神:我的亡灵军团们,给我守住,我需要更多的亡灵对付他的生化战士。李峰:征服地球好像点难度,那先征服其它世界好了。