Quick Report 说明 for delphi 7

报表定义了数据库中数据最终以文档形式呈现给用户的外观,所以在设计报表之前应先清楚报表的组成部分。

一个报表的组成区域

报表页眉(Page Header)—打印在每一页的顶端,通常用于显示单位名称、打印日期、时间及页码等信息。

[@more@]

报表标题—(Title)在报表的开始处打印报表的标题。

数据列标题—(Column Header)报表数据区中每一列的标题,用来标明每一列的数据是何、内容。

数据栏—(Detail)明细栏。就是显示数据的区域,用于打印报表的数据。

汇总区—(Summary)用来打印报表的统计数据。

报表页脚—(Page Footer)位于每一页的最下方,通常用来打印日期、页码、制表人等信息。

报表组件

QuickRep 组件

建立报表的最基本组件,创建报表的过程就是将报表区域组件及各种可打印组件至于该组件之上,并与数据集连接的过程。

主要属性

Dataset—指定报表从哪一个数据集获得数据。

Bands—通过对它的六个子属性(Page Header 、Title 、Column Header、 Detail、 Summary 、Page Footer)的选择确定出现在报表上的区域。

Page—用来设计报表页面的布局,如纸张、打印方向。

QRLabel组件

类似Label组件

在报表中表示静态文本信息(Caption属性设置)

该组件常用于页眉、页脚、报表标题区及数据列标题区中

QRDBText组件

类似于DBText组件

打印数据集中指定字段的数据

DataSet属性:要连接的数据集

DataField属性:要连接的字段

该组件常用于数据栏中,显示数据库中的数据

QRDBImage组件

类似于DBImage组件

打印数据库表的图像字段

Dataset属性:要连接的数据集

DataField属性:连接含有图像的字段。

Strtech属性:图片适应外框大小

该组件常用于数据栏中,显示数据库中的图像

QRExpr

完成表达式计算。该组件常用于汇总区中 .

expression属性:指定所要计算的表达式。

master属性:指定要连接的QuickRep(或QRSubDetail对象)。该属性决定在需要时执行表达式的重新计算。

Value属性:访问expression的值。

QRSysData

打印系统信息,如当前时间和页码等。

Data属性:用来指定所要打印的数据。

u qrsDate 当前日期

u qrsDateTime 当前日期及时间

u qrsDetailCount 数据记录的个数

u qrsDetailNo 数据记录的序号

u qrsPageNumber 页码

u qrsReportTitle 报表标题

u qrsTime 当前时间

Text属性:指定数据前面的说明性文本。

该组件常用于页眉、页脚区域中。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/729024/viewspace-1020509/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/729024/viewspace-1020509/

一、 简单了解各控件功能   以下是各控件最简单的使用功能,其他功能依具体的实现而介绍。  TquickRep:带有坐标,作为其他报表控件(如TQRBand)的容器,它的Band属性可以自动添加各种类型的TQRBand.   TQRLabel:打印静态的文本(即不是根据数据库值来改变的),作用象Tlabel , Caption的内容就打印出来的内容。   TQRDBText:打印数据库字段值,一个值一行。作用象TDBText.把它的DataSet , DataField分别赋予Table1,Company时,将打印Table1所指向的表的Company字段的内容。   TQRSysData:打印系统信息如时间,页码,报表头等。   TQRMemo:非常象TQRLabel,只是它可以打印多行,也是打印静态数据。   TQRRichText:打印RichText格式,能够连接到一个Form上的RichEdit控件并打印它的内容,不过必须是32位版本的。   TQRShape:打印方框、圆和垂直、水平线。   TQRImage:打印静态的图片,包括(BMP,WMF,ICON).   TQRDBImage:从数据库接收图片。   TQRBand:用来确定报表的不同位置应该显示什么内容,它上面可以放控件(参见二)。   TQRGoups:Groups可以不限级别的组操作。当你连接了几个datasets到报表时可以通过Groups成组的对dataset进行操作。   二、 报表的控件摆放循序   出现在所有页上的标题(PageHeader)   标题(只有首页才有)(Title)   所有列的标题(ColumnHeader)   记录的内容,一个字段一列(Detail)   摘要(最后一页才有)(Summary)   出现在所有页上的页脚(PageFooter)   这些根据设置不同的Band(不是控件,一种类型而已,在其上面可以放其他控件)来定位。总共有六种Band。   三、 一个简单的例子   这个例子制作打印一张表的部分字段名及该字段数据内容的报表。   建立一个新project   放一个TTable到Form上,DatabaseName设为BCDEMOS,TableName指向Customer表,Active设为true.   放一个TquickRep控件在Form上,DataSet属性为Table1.(即要显示上边Table1所指向的表的内)。   展开TquickRep的Bands属性,设HasDetail为true,这时自动增加个detail band(一个TQRBand控件,故也可以直接放一个TQRBand控件,BandType属性设为detail就行了)。   放一个TQRDBText控件在detail band上面,设DataSet指向Table1,DataField指向Company。第四步是设置在报表的什么位置显示什么类型的数据,而TQRDBText则具体实现。   选TquickRep控件,按右键,选择”Preview”预览,应该看到表Customer的字段Company的所有字段值。  到这一个简单的例子就OK了,程序实现预览及利用TQRuickRep自带的打印功能只须在Form中加一个按钮,它的OnClick事件为:QuickRep1->Preview();  四、一个使用TQRGoups、TQRExpr控件的报表   该报表先列出州名,接着列出该州的所有公司及公司总数,一个州列完后空一行(groups中断),列出新的州名,接着列新州下的所有公司,没有填州名的公司统一列在Unknown state下面。  建立一个新project。   放一个Tquery在Tquickrep上,其SQL属性为:select * from customer order by State,Company;(即根据州、公司排序),DatabaseName为BCDMome,Active为true.   放一个TquickRep控件在Form1上,DataSet为Tquery1.   放一个TQRGroups控件在TquickRep上,这时默认为group header。(任何时候当group中断或更高级别的group中断,这个header都将打印出来,如果有表达式,根据表达式的值显示内容。)接着添加一个group footer band,添加时,放一个TQRBand控件在报表上,连接TQRGroups的FooterBand属性到这个QRBand,这时这个新建的TQRBand就成为Group Footer. (TQRGroup的一个重要特性是表达式,任何时候当表达式的值变时Group都将中断,如表达式是按省列出城市名,当前列出广东省,当属于该省的城市列完后,表达式值改变,这时Group中断,接着显示其他省的城市名。)TQRGroups的Expression属性设为Query1.State(根据不同的州来中断)。   放一个TQRBand控件在报表上,BandType为rbDetail.   放一个TQRExpr控件在group header上面,其Expression属性为:if(State<>’’,State,’Unknown state’),即如果公司的州没填,就归入Unknown state,否则归入State.   放三个TQRDBText在Detail上,他们的DataSet都指向Query1,DataField分别指向Company,Contact,Phone.   在放一个TQRExpr控件在group Footer上面,Expression为’Customers in’+State+’:’+Str(Count) 作用是在每个州的公司列完后显示该州总共有多少个公司。   按右键选预览,应该看到不同的州名及其公司和公司公司总数。  五、QuickReport 条件式列印   可以直接在 TQuickReport 的 OnFilter 事件中写明条件判断,OnFilter事件的引数中有一个以 var 宣告的 PrintRecord 布林型态变数,将这个变数设为 True(预设值), 该笔记录便会印出;反之, 设为False,就不印出这笔记录. procedure TForm1.QuickReport1Filter(var PrintRecord: Boolean); begin PrintRecord := False; if YourTable.FieldByName(‘WantedField‘).AsInteger <= 100 then Exit; if YourTable.FieldByName(‘WantedField‘).AsInteger >= 150 then Exit; PrintRecord := True;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值