基于quickreport的报表设计和打印

上传人:自*** 文档编号:80555767 上传时间:2019-02-19 格式:DOC 页数:4 大小:193.80KB
返回 下载 相关 举报
基于quickreport的报表设计和打印_第1页
第1页 / 共4页
基于quickreport的报表设计和打印_第2页
第2页 / 共4页
基于quickreport的报表设计和打印_第3页
第3页 / 共4页
基于quickreport的报表设计和打印_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于quickreport的报表设计和打印》由会员分享,可在线阅读,更多相关《基于quickreport的报表设计和打印(4页珍藏版)》请在金锄头文库上搜索。

1、总第111期 王红卫:基于QuickReport的报表设计和打印 27 基于QuickReport的报表设计和打印*王红卫(中国电子科技集团公司第39研究所 西安710065)摘要 简要介绍了QuickReport组件包中各组件的功能,说明了在Borland C+ Builder和Delphi中如何使用QuickReport组件快速实现简单和较复杂报表的设计、打印预览、打印的基本方法和步骤;此外,还着重说明了如何为报表添加页眉、页脚、封面等方法。关键词 C+ Builder Delphi QuickReport 报表 打印1 引 言Borland C Builder是基于C语言的可视化编程环境

2、,它提供了可重用组件库和一系列RAD设计工具,使得编程者只需用少量的手工代码就可以创建出高效的Windows应用程序,因此深受软件开发人员的喜爱。在开发应用程序时,会经常涉及到数据库报表的设计和打印问题。C Builder中提供了Quick Report(快速报表)组件组供编程人员设计报表。Quick Report是挪威的QuSoft AS公司专门为C Builder和Delphi设计的用于制作报表的一组组件,它和集成环境紧密地结合在一起,成为它们的一个重要组成部分。虽然使用QuickReport工具就象使用C+ Builder和Delphi的其它组件一样,可以进行属性设置,调用方法及响应事件

3、等,它可以利用TTable和TQuery等数据集组件中的数据表生成报表,也可以利用文本文件生成报表,但是在C Builder和Delphi中关于Quick Report的帮助文档不是很详细,另外它与C Builder和Delphi中的其它组件的风格也不太一致。笔者经过摸索和实践,对用Quick Report组件组进行报表的设计和打印略有心得,下面就以C+ Builder 5.0为例(在Delphi中的使用与此类似)把它介绍给大家。2 QReport组件的介绍C+ Builder中QReport组件板中有23个组件,如图1所示。图1 QReport页中的组件* 收稿日期:2005年6月23日QR

4、eport组件板中每个组件功能的简要说明如表1所示。表1 QReport组件板各组件的功能组件名称功 能QuickRep用于建立报表的最基本组件,提供了制作报表的基本属性和方法。QRSubDetail用来显示主/明细报表中明细表的数据。QRStringsBand用于创建和数据集没有任何联系的报表。QRBand用于放置可显示的QuickReport组件,把一个表单根据不同的设置类型分为不同的部分。QRChildBand用于把一个很长的段分为几个字段。QRGroup用于将报表上的Band分组。QRLabel用于在报表上显示字符串。QRDBText用于输出指定的数据集字段,也可输出值为多行的Memo

5、字段。RExpr用于计算和输出表达式的值。QRSysData用于输出系统数据,如系统时间和日期。QRMemo用于在报表中输出多行文字。QRExprMemo是QRMemo和QRExpr的组合,用于显示一段带有表达式的文字。RRichText用于显示RTF格式的文本。QRDBRichText用于显示数据库中RTF格式的备注型字段。QRShape用于在报表上输出几何图形。QRImage用于在报表上输出图形。QRDBImage用于在报表上输出数据库中的BLOB图像字段。QRCompositeReport用于将多个报表合成为一个报表。QRPreview用于创建用户自定义的打印预览表单。QRTextFil

6、ter用于将报表输出到一个ASCII文本文件。QRCSVFilter用于将报表输出到一个以逗号分隔的文本文件。QRHTMLFilter用于将报表输出到一个HTML文件,以便在互联网上发布或使用互联网浏览器进行查看。QRChart用于在报表上输出图表,类似于Teechart组件。根据我们的应用经验,在开发中最常用到的组件有:QuickRep、QRSubDetail、QRBand、QRChildBand、QRExpr、QRSysData、QRLabel等。3 用QuickReport组件进行报表设计接下来,我们将按照从简单到复杂的顺序来叙述用QuickReport组件进行报表设计。3.1 制作简单

7、的报表在这里,我们将要制作一个仅包含有列标题和数据内容的报表。设计报表前,需要先做一些准备工作。和创建通常的应用程序类似,先要建立一个新的Form,并在该Form中放置一个Table组件,假定为其命名为Table1,将其DataBase属性设置为DBDemos,TableName属性设置为Customers.db,Active属性设置为Ture;之后再放入一个DataSource组件,假定将其命名为DataSourcel,设置其DataSet属性为Table1。下来我们要做的就是将Orders.db中的数据在报表中显示出来。在该Form中放入一个作为容器的QuickRep组件,将其命名为Qui

8、ckRep1,并把它的DataSource属性设为DataSource1;然后在QuickRep组件上放入两个QRBand组件,在对象查看器(Object Inspector)中将二者的BandType属性分别设置为rbColumnHeading和rbDetail,这里将这两个组件分别命名为Band1和Band2;接下来在Band1中加入数个QRLabel,并根据具体情况对这些QRLabel的Caption属性进行设置,对应的在Band2中放置相应个数的QRDBText组件,将它们的DataSource属性设为DataSource1,视具体情况对DataField属性进行设置。至此,一个简单的

9、报表就设计完成了(所设计出的报表的外观图省略)。为了在设计过程中随时了解所设计的报表的外观,可以在QuickRep组件上单击鼠标的右键,从弹出菜单中选择Preview项,这样就可以预览自己所设计的报表的外观了。至于在运行时如何预览报表,将在后面叙述。3.2 制作带有主从关系的复杂报表在实际编写数据库应用程序时,通常会遇到数据分散在多个彼此相关的数据库表中的情况。较为典型的例子是C+ Builder中所附带的数据库样表:客户表(Customer)和订单表(Order)。其中,对应于每一个客户,在Customer表中都有一个记录,而对于每一项订单,在Order表中也有一个对应的记录。因为每一个订单

10、都来自特定的客户,这样,就在两个数据库表之间形成了一种自然的关系。这是一种一对多的关系,因为一个客户可能有多个订单(这时,Customer是主表,Order是细表)。在前面所设计报表的基础上,在Form中加入一个新的Table组件,假定为其命名为Table2,设置它的DataBase属性值为DBDemos,TableName属性值为Orders.db,Active属性值为Ture,MaserSource属性值为DataSource1,建立主从关系为CustNo;然后再在From中放入一个DataSource组件,假定将其命名为DataSource2,设置其DataSet属性为Table2。为了

11、设计带有主从关系的报表,需要再在QuickRep上增加一个QRBand组件,将其命名为Band3,设置其BandType属性值为rbSubDetail;在Band3中增加两个QRLabel组件,设置它们的Caption属性值分别为“订单编号”、“税率”,随后在对应的QRLabel组件后增加两个QRDBText组件,设置它们的DataSource属性值为Datasource2,DataField属性分别为Order,TaxRate。这样,一个主从关系报表就设计完成了(所设计出的报表的外观图省略)。在设计过程中预览报表的方法同上。作为显示数据内容的报表的设计,至此就基本上完成了。但在实际应用中,为

12、了使所设计出的报表更加美观,我们还可以做以下的一些工作。3.3 给报表添加页眉和页脚为了美观和方便,我们常希望能在报表每页的页眉或页脚中打印出页码、总页数、打印日期等等。对于这些要求,QuickReport中也提供了简便的实现方法。在上面设计完成的报表中,增加一个QRBand构件Band4,将其BandType属性设置为rbPageHeader,即可将Band4中的内容作为页眉打印出来;相应的,为打印页脚,只需将其BandType属性设置为rbPageFooter即可。在Band4中加入QRLabel构件,可在报表中每页显示相应的页眉或页脚文字;加入QRSYSdata构件,设置其Data属性值

13、,可在打印出的报表中显示页码、打印日期、打印时间、记录序号等文档信息。3.4 为报表添加标题和封面有时,我们希望在第一页上加上标题或给报表加上封面,在使用QuickReport制作报表时,这也是很容易实现的。在报表中增加一个TQRBand构件Band5,将其属性设为rbTitle,在Band5中所加的文字和图形,均在第一页中打印出来。当用于封面时,可在该Band的AfterPrint事件中加入Report1NewPage即可。3.5 为报表添加表格线报表中的表格线可以使报表看起来更为清晰明朗。对此,QuickReport中提供了两种方法:一是使用TQuickReport和TQRBand构件的F

14、rame属性;二是直接使用TQRSharp构件。使用TQuickReport和TQRBand构件的Frame属性的优点是设置简单,不需要写程序代码;缺点就是不能随意修改其位置和大小。使用TQRSharp则恰恰相反。而且在其所属Band的AfterPrint事件中可自由修改其位置、线型、粗细等参数。3.6 在运行过程中实现报表预览和打印在应用程序中,使用QuickReport组件设计出的报表,在运行过程中需要进行预览和打印时,可以通过调用QuickRep组件的预览和打印方法很方便地实现。针对上述例子的预览和打印语句分别是:QuickRep1-Preview(); /预览报表QuickRep1-Print(); /打印报表有时,由于QuickReport提供的报表预览窗口是英文的,为了使用方便,用户也可以根据自己的实际需要,使用QRPreview组件定制自己的报表预览窗口。由于篇幅所限,在此就不再赘述了。3.7 报表的输出和输入在使用QuickReport组件设计报表的过程中,我们考虑到有时用户需要将当前报表内容保存下来,在需要的时候再次打开进行浏览或打印。而这一要求在QuickReport(下转第31页)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号