当前位置:天才代写 > tutorial > C语言/C++ 教程 > QuickReport根基常识

QuickReport根基常识

2017-11-05 08:00 星期日 所属: C语言/C++ 教程 浏览:346

副标题#e#

一、 简朴相识各控件成果

以下是各控件最简朴的利用成果,其他成果依详细的实现而先容。

1. TquickRep:带有坐标,作为其他报表控件(如TQRBand)的容器,它的Band属性可以自动添加各类范例的TQRBand.

2. TQRLabel:打印静态的文本(即不是按照数据库值来改变的),浸染象Tlabel , Caption的内容就打印出来的内容。

3. TQRDBText:打印数据库字段值,一个值一行。浸染象TDBText.把它的DataSet , DataField别离赋予Table1,Company时,将打印Table1所指向的表的Company字段的内容。

4. TQRSysData:打印系统信息如时间,页码,报表头等。

5. TQRMemo:很是象TQRLabel,只是它可以打印多行,也是打印静态数据。

6. TQRRichText:打印RichText名目,可以或许毗连到一个Form上的RichEdit控件并打印它的内容,不外必需是32位版本的。

7. TQRShape:打印方框、圆和垂直、程度线。

8. TQRImage:打印静态的图片,包罗(BMP,WMF,ICON).

9. TQRDBImage:从数据库吸收图片。

10. TQRBand:用来确定报表的差异位置应该显示什么内容,它上面可以放控件(拜见二)。

11.TQRGoups:Groups可以不限级此外组操纵。当你毗连了几个datasets到报表时可以通过Groups成组的对dataset举办操纵。

二、 报表的控件摆放循序

呈此刻所有页上的标题(PageHeader)

标题(只有首页才有)(Title)

所有列的标题(ColumnHeader)

记录的内容,一个字段一列(Detail)

摘要(最后一页才有)(Summary)

呈此刻所有页上的页脚(PageFooter)

这些按照配置差异的Band(不是控件,一种范例罢了,在其上面可以放其他控件)来定位。总共有六种Band。


#p#副标题#e#

三、 一个简朴的例子

这个例子建造打印一张表的部门字段名及该字段数据内容的报表。

1. 成立一个新project

2. 放一个TTable到Form上,DatabaseName设为BCDEMOS,TableName指向Customer表,Active设为true.

3. 放一个TquickRep控件在Form上,DataSet属性为Table1.(即要显示上边Table1所指向的表的内)。

4.展开TquickRep的Bands属性,设HasDetail为true,这时自动增加个detail band(一个TQRBand控件,故也可以直接放一个TQRBand控件,BandType属性设为detail就行了)。

5.放一个TQRDBText控件在detail band上面,设DataSet指向Table1,DataField指向Company。第四步是配置在报表的什么位置显示什么范例的数据,而TQRDBText则详细实现。

6.选TquickRep控件,按右键,选择”Preview”预览,应该看到表Customer的字段Company的所有字段值。

到这一个简朴的例子就OK了,措施实现预览及操作TQRuickRep自带的打印成果只须在Form中加一个按钮,它的OnClick事件为:QuickRep1->Preview();

四、 一个利用TQRGoups、TQRExpr控件的报表

该报表先列出州名,接着列出该州的所有公司及公司总数,一个州列完后空一行(groups间断),列出新的州名,接着列新州下的所有公司,没有填州名的公司统一列在Unknown state下面。

1. 成立一个新project。

2. 放一个Tquery在Tquickrep上,其SQL属性为:select * from customer order by State,Company;(即按照州、公司排序),DatabaseName为BCDMome,Active为true.

3. 放一个TquickRep控件在Form1上,DataSet为Tquery1.

4. 放一个TQRGroups控件在TquickRep上,这时默认为group header。(任何时候当group间断或更高级此外group间断,这个header都将打印出来,假如有表达式,按照表达式的值显示内容。)接着添加一个group footer band,添加时,放一个TQRBand控件在报表上,毗连TQRGroups的FooterBand属性到这个QRBand,这时这个新建的TQRBand就成为Group Footer. (TQRGroup的一个重要特性是表达式,任何时候当表达式的值变时Group都将间断,如表达式是按省列出都市名,当前列出广东省,当属于该省的都市列完后,表达式值改变,这时Group间断,接着显示其他省的都市名。)TQRGroups的Expression属性设为Query1.State(按照差异的州来间断)。

5. 放一个TQRBand控件在报表上,BandType为rbDetail.

6.放一个TQRExpr控件在group header上面,其Expression属性为:if(State<>’’,State,’Unknown state’),即假如公司的州没填,就归入Unknown state,不然归入State.

7.放三个TQRDBText在Detail上,他们的DataSet都指向Query1,DataField别离指向Company,Contact,Phone.

8.在放一个TQRExpr控件在group Footer上面,Expression为’Customers in’+State+’:’+Str(Count) 浸染是在每个州的公司列完后显示该州总共有几多个公司。

9.按右键选预览,应该看到差异的州名及其公司和公司公司总数。

五、QuickReport 条件式列印

#p#分页标题#e#

可以直接在 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;

 

    关键字:

天才代写-代写联系方式