




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
总第111期 王红卫:基于QuickReport的报表设计和打印 27 基于QuickReport的报表设计和打印*王红卫(中国电子科技集团公司第39研究所 西安710065)摘要 简要介绍了QuickReport组件包中各组件的功能,说明了在Borland C+ Builder和Delphi中如何使用QuickReport组件快速实现简单和较复杂报表的设计、打印预览、打印的基本方法和步骤;此外,还着重说明了如何为报表添加页眉、页脚、封面等方法。关键词 C+ Builder Delphi QuickReport 报表 打印1 引 言Borland C Builder是基于C语言的可视化编程环境,它提供了可重用组件库和一系列RAD设计工具,使得编程者只需用少量的手工代码就可以创建出高效的Windows应用程序,因此深受软件开发人员的喜爱。在开发应用程序时,会经常涉及到数据库报表的设计和打印问题。C Builder中提供了Quick Report(快速报表)组件组供编程人员设计报表。Quick Report是挪威的QuSoft AS公司专门为C Builder和Delphi设计的用于制作报表的一组组件,它和集成环境紧密地结合在一起,成为它们的一个重要组成部分。虽然使用QuickReport工具就象使用C+ Builder和Delphi的其它组件一样,可以进行属性设置,调用方法及响应事件等,它可以利用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日QReport组件板中每个组件功能的简要说明如表1所示。表1 QReport组件板各组件的功能组件名称功 能QuickRep用于建立报表的最基本组件,提供了制作报表的基本属性和方法。QRSubDetail用来显示主/明细报表中明细表的数据。QRStringsBand用于创建和数据集没有任何联系的报表。QRBand用于放置可显示的QuickReport组件,把一个表单根据不同的设置类型分为不同的部分。QRChildBand用于把一个很长的段分为几个字段。QRGroup用于将报表上的Band分组。QRLabel用于在报表上显示字符串。QRDBText用于输出指定的数据集字段,也可输出值为多行的Memo字段。RExpr用于计算和输出表达式的值。QRSysData用于输出系统数据,如系统时间和日期。QRMemo用于在报表中输出多行文字。QRExprMemo是QRMemo和QRExpr的组合,用于显示一段带有表达式的文字。RRichText用于显示RTF格式的文本。QRDBRichText用于显示数据库中RTF格式的备注型字段。QRShape用于在报表上输出几何图形。QRImage用于在报表上输出图形。QRDBImage用于在报表上输出数据库中的BLOB图像字段。QRCompositeReport用于将多个报表合成为一个报表。QRPreview用于创建用户自定义的打印预览表单。QRTextFilter用于将报表输出到一个ASCII文本文件。QRCSVFilter用于将报表输出到一个以逗号分隔的文本文件。QRHTMLFilter用于将报表输出到一个HTML文件,以便在互联网上发布或使用互联网浏览器进行查看。QRChart用于在报表上输出图表,类似于Teechart组件。根据我们的应用经验,在开发中最常用到的组件有:QuickRep、QRSubDetail、QRBand、QRChildBand、QRExpr、QRSysData、QRLabel等。3 用QuickReport组件进行报表设计接下来,我们将按照从简单到复杂的顺序来叙述用QuickReport组件进行报表设计。3.1 制作简单的报表在这里,我们将要制作一个仅包含有列标题和数据内容的报表。设计报表前,需要先做一些准备工作。和创建通常的应用程序类似,先要建立一个新的Form,并在该Form中放置一个Table组件,假定为其命名为Table1,将其DataBase属性设置为DBDemos,TableName属性设置为Customers.db,Active属性设置为Ture;之后再放入一个DataSource组件,假定将其命名为DataSourcel,设置其DataSet属性为Table1。下来我们要做的就是将Orders.db中的数据在报表中显示出来。在该Form中放入一个作为容器的QuickRep组件,将其命名为QuickRep1,并把它的DataSource属性设为DataSource1;然后在QuickRep组件上放入两个QRBand组件,在对象查看器(Object Inspector)中将二者的BandType属性分别设置为rbColumnHeading和rbDetail,这里将这两个组件分别命名为Band1和Band2;接下来在Band1中加入数个QRLabel,并根据具体情况对这些QRLabel的Caption属性进行设置,对应的在Band2中放置相应个数的QRDBText组件,将它们的DataSource属性设为DataSource1,视具体情况对DataField属性进行设置。至此,一个简单的报表就设计完成了(所设计出的报表的外观图省略)。为了在设计过程中随时了解所设计的报表的外观,可以在QuickRep组件上单击鼠标的右键,从弹出菜单中选择Preview项,这样就可以预览自己所设计的报表的外观了。至于在运行时如何预览报表,将在后面叙述。3.2 制作带有主从关系的复杂报表在实际编写数据库应用程序时,通常会遇到数据分散在多个彼此相关的数据库表中的情况。较为典型的例子是C+ Builder中所附带的数据库样表:客户表(Customer)和订单表(Order)。其中,对应于每一个客户,在Customer表中都有一个记录,而对于每一项订单,在Order表中也有一个对应的记录。因为每一个订单都来自特定的客户,这样,就在两个数据库表之间形成了一种自然的关系。这是一种一对多的关系,因为一个客户可能有多个订单(这时,Customer是主表,Order是细表)。在前面所设计报表的基础上,在Form中加入一个新的Table组件,假定为其命名为Table2,设置它的DataBase属性值为DBDemos,TableName属性值为Orders.db,Active属性值为Ture,MaserSource属性值为DataSource1,建立主从关系为CustNo;然后再在From中放入一个DataSource组件,假定将其命名为DataSource2,设置其DataSet属性为Table2。为了设计带有主从关系的报表,需要再在QuickRep上增加一个QRBand组件,将其命名为Band3,设置其BandType属性值为rbSubDetail;在Band3中增加两个QRLabel组件,设置它们的Caption属性值分别为“订单编号”、“税率”,随后在对应的QRLabel组件后增加两个QRDBText组件,设置它们的DataSource属性值为Datasource2,DataField属性分别为Order,TaxRate。这样,一个主从关系报表就设计完成了(所设计出的报表的外观图省略)。在设计过程中预览报表的方法同上。作为显示数据内容的报表的设计,至此就基本上完成了。但在实际应用中,为了使所设计出的报表更加美观,我们还可以做以下的一些工作。3.3 给报表添加页眉和页脚为了美观和方便,我们常希望能在报表每页的页眉或页脚中打印出页码、总页数、打印日期等等。对于这些要求,QuickReport中也提供了简便的实现方法。在上面设计完成的报表中,增加一个QRBand构件Band4,将其BandType属性设置为rbPageHeader,即可将Band4中的内容作为页眉打印出来;相应的,为打印页脚,只需将其BandType属性设置为rbPageFooter即可。在Band4中加入QRLabel构件,可在报表中每页显示相应的页眉或页脚文字;加入QRSYSdata构件,设置其Data属性值,可在打印出的报表中显示页码、打印日期、打印时间、记录序号等文档信息。3.4 为报表添加标题和封面有时,我们希望在第一页上加上标题或给报表加上封面,在使用QuickReport制作报表时,这也是很容易实现的。在报表中增加一个TQRBand构件Band5,将其属性设为rbTitle,在Band5中所加的文字和图形,均在第一页中打印出来。当用于封面时,可在该Band的AfterPrint事件中加入Report1NewPage即可。3.5 为报表添加表格线报表中的表格线可以使报表看起来更为清晰明朗。对此,QuickReport中提供了两种方法:一是使用TQuickReport和TQRBand构件的Frame属性;二是直接使用TQRSharp构件。使用TQuickReport和TQRBand构件的Frame属性的优点是设置简单,不需要写程序代码;缺点就是不能随意修改其位置和大小。使用TQRSharp则恰恰相反。而且在其所属Band的AfterPrint事件中可自由修改其位置、线型、粗细等参数。3.6 在运行过程中实现报表预览和打印在应用程序中,使用QuickReport组件设计出的报表,在运行过程中需要进行预览和打印时,可以通过调用QuickRep组件的预览和打印方法很方便地实现。针对上述例子的预览和打印语句分别是:QuickRep1-Preview(); /预览报表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全教育家长会课件
- 安全攻防培训课件
- 湖南全国计算机二级考试题库单选题100道及答案
- 重庆市西南大学附中2022-2023学年高二下学期期末语文试题 无答案
- 大班交通安全教育
- 提升行政法学素养的试题及答案分享
- 数字系统课程设计
- 安全主题班会课件
- 《我与地坛》教学设计
- 人教版下册语文园地三
- 2022年浙江省金华市义乌市小升初语文试卷(一)
- 22S803 圆形钢筋混凝土蓄水池
- 中建机电工程实体质量控制水暖
- 常见藻类图谱(史上最全版本)
- 城市水污染的现状及治理建议分析
- 电子CAD技能试题(4)555振荡器
- DBJ51T 189-2022 四川省建设工程施工现场安全资料管理标准
- 江西省中考:《地理》科目2022年考试真题与答案解析
- 2023年四川省第一期医疗护理员理论考试试题及答案
- 高中英语-A Journey of Discovery教学课件设计
- 开封废金属回收有限责任公司新建报废汽车拆解线项目环境影响报告
评论
0/150
提交评论