Delphi7中使用RAVE报表.doc_第1页
Delphi7中使用RAVE报表.doc_第2页
Delphi7中使用RAVE报表.doc_第3页
Delphi7中使用RAVE报表.doc_第4页
Delphi7中使用RAVE报表.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

言归正传,在我们要给用户编写的软件中往往需要生成各种各样的报表,报表是数据库中数据的最终表现形式,在Delphi 6以前,编写报表都在使用Qusoft公司的Quick report,而且在Delphi中集成了Quick report。 在Borland Delphi 7 Studio 集成开发环境(IDE)的控件面板中取消了Quick report项,取而代之以Nevrona公司Rave Reports项,且在Tools中有Rave Designer 5.0 。 打开Rave Designer 5.0,我们可以如图所示的一个报表设计界面,开发人员可以开发出符合用户要求的报表来,而且这个报表的设计、使用与Delphi集成开发环境几乎是完全的一样,这可能是Rave与其它的报表组件最大的外观上的不同。 我在使用中下载了Rave Reports v5.1.3,你可以在/ 或者/ 下载,在写这篇文章时,/上已经发布了Rave Reports 6.0,不过文章还是以Rave Reports v5.1.3为准。打开Delphi,可以控件面板看到如图:Delphi7下的Rave 打开Tools中的Rave,看到的报表设计界面如图:Rave5的报表设计界面 一、Rave5的报表设计界面首先,介绍一下Rave的报表设计器的各组件和相关的属性。Rave Designer集成开发环境的界面包括标题栏、菜单栏、快捷工具栏、组件栏和一些窗口: 标题栏显示了当前的工程名,位于最上部。 菜单栏,一些功能可通过菜单栏的菜单命令实现。快捷工具栏为位图按钮,一些常用的菜单命令用这些按钮实现。报表组件栏分页显示各种组件(Standard、Report、Zoom、Colors、Lines、Fills、Fonts、Drawing、Bar Code、Alignment),在利用Rave开发应用程序的过程中,正确、合理地使用组件非常重要。用它可设计基于数据库和文本的复杂报表。 左边半部分像Delphi的object inspector工具,可设置报表元件的属性,它的下部分有对应属性的简短提示。 正中部分为设计区域,开发者可在上面添加各种设计元件,如Drawing的横线、直线、矩形、椭圆,Barcode中各种常用的条码,Standand 中的Text、Memo、Section、Bitmap、Metafile等等。 右边为设计导航区,可查看报表的各元件的更多信息,如报表库和数据显示目录,设计时也可快速定位元件位置。二、Rave的报表设计器,组件栏的各组件:、Drawing (绘图) 组件页:Line component :画线组件,所画的线较灵活 。可以看到其属性入图,有颜色、线宽、线行等属性,设计者根据需要更改属性。改变线的长短位置,选中线条后,选择一个端点则光标会变为十子型,拖动即可。Hline component :画水平线组件 。 Vline component :画垂直线组件 。Rectangle component :画长方形组件,可以使用fill组件填充。Square component :画正方形组件,可以使用fill组件填充。Ellipse component :画椭圆组件,可以使用fill组件填充。Circle component :画圆形组件,可以使用fill组件填充。、Bar Code(条形码)组件页:PostNetBarCode :打印邮件标签上包括 POSTNET 条码 。 I2of5BarCode :打印 Interleaved 2 of 5条码。Code39BarCode :打印standard and extended Code 39条码。 Code128BarCode :打印 A, B and C Code 128条码。 UPCBarCode :打印 UPC-12条码。 EANBarCode :打印 EAN-13条码。、Standard(标准)组件页:Text :这个组件是在报表上固定的文字,例如报表的标题等,可以设置字体的大小、颜色,Rotation属性可以使要显示的字为任意角度。 Memo :Memo组件提供了多行文本的文字,与delphi中的相似,属性很多,但我们应用的不多,可以使用text属性添加文本。Section : 这个组件是其他组件的容器,将其他组件固定在此组件中。Bitmap : 这个组件是在报表中放置bmp文件 (*.bmp), FileLink属性连接bmp文件。MetaFile : 这个组件在报表中放置meta文件 (*.wmf),FileLink属性连接meta文件。FontMaster : 这个组件控制报表中的任何的text字的属性。在要使用该字体的text组件或memo组件的fontmirrot属性选择FontMaster。PageNumInit :报表显示页码的初始页码。如图的InitValue的值为5,则报表的初始页为5,页码从开始。、Report(报表)组件页:如果报表需要的是数据库的数据,则这个组件页中的组件使用比较频繁。 DataText:用来显示数据库中内容比较短的信息,要用它显示相应的数据库字段信息,则要使用到DataField 和DataView两个属性,用来连接数据库和字段。DataText用来设计主从报表时,LookupDataView是相应的数据连接、LookupDisplay是显示内容、LookupField是主报表相应的数字段进行关联的字段的内容,也就是主数据字段进行连接的字段。LookupInvalid是控制相应错误产生后的情况。DataMemo:在Memo的基础上支持了数据库的字段显示, 使用DataField 和DataView两个属性,用来连接数据库和字段。除了输出相应的文本内容外,还可以输出RTF格式,显示RTF格式,需要设置ContainsRTF属性为True。CalcTex:这个组件用来统计报表字段的最大值、最小值、总和、统计值等内容直接使用,只需要通过CalcType属性来设置,CalcType属性包括了ctAverage(求平均值)、CtCount(求个数)、ctMax(求最大值)、ctMin(求最小值)、ctSum(求累加和)。DataMirrorSection:和Section组件相似。Region:如果要进行报表的打印,Region组件规定了打印区域,可以设置Columns来分栏。Band:这个组件算是一个容器组件,包括text、Memo组件等,包括的是非数据库库信息,Band组件要放置在Region中,选择BandStyle属性后,出现如下图的属性对话框。左边为报表中Band的列表,右面的PrintLocation包括:Body Header(页眉)、Group Header(组眉)、 Row Header(行眉)、Detail(表体)、Row Footer(行脚)、Group Footer(组脚) 和Body Footer(页脚),BandStyle属性可以多选。Print Occurrence属性包括: First(首页打印)、New Page(打印新一页)、New Column(新分栏)。选择First(首页打印)也就是Band包括的内容只在第一页打印,选择New Page(打印新一页),Band包括的内容必须在新的一页打印,选择New Column(新分栏),Band包括的内容必须在新的分栏中打印。DesignerHide属性:当一个报表有多个Band时,选择查找Band变得比较麻烦,设置DesignerHide属性为True时,没有选择到的Band内容被隐藏。GroupDataView 和GroupKey属性:如果想要以相应的数据结果作为报表分组的依据,那么就必须设置这两个属性,GroupDataView是相应的数据源,GroupKey是数据源的索引,分组是靠GroupKey中的值进行分组的。DataBand:是直接作用于数据库,且可以在其中摆放相应数据库报表组件,这样通过它就可以让相应的报表具有数据库书库打印功能。其中DataView属性是设置相应的数据源,GroupDataView是相应的报表中的分组数据源。DataCycle:与DataBand相似的地方在于循环的显示数据,DataBand是数据库内容的循环打印,而DataCycle不需要使用Region,它打印的区域为页面,每页只能打印一个组件设计好的内容。使用DataBand是根据Region的范围来分页,而DataCycle则是每一页只现实一条信息根据数据的多少分页。CalcOp:该组件提供了报表相应的计算功能,具体的使用会在以后讲解。CalcTotal:与CalcOp结合使用来完成日常报表的统计功能。、Zoom(缩放)组件:在设计报表时,放大、缩小报表页面。、Colors(颜色)组件:对选择的对象快速的设置颜色。、Lines(线型)组件:对于选择的线,更改其线型。、Fills (填充)组件:对于正方形等图形填充样式。、Fonts(字体)组件:进行字体的设置。、Alignment(队列)组件:调整对齐组件和组建的层次。隔了好长时间终于有时间继续向大家介绍RAVE了,这次主要介绍Delphi7下的Rave组件。打开Delphi7,看到的rave页如下: Delphi7下的Rave 包括有RvProject、RvSystem、RvNDRWriter、RvCustomConnection、RvDataSetConnection、RvTableConnection、RvQueryConnection、RvRenderPreview、RvRenderPrinter、RvRenderPDF、RvRenderHTML、RvRenderRTF、RvRenderText这几个组件。一、RvProject组件在使用rave报表中,这个组件是最为重要的一个,是使用频率最高的一个组件,开发人员可以通过这个报表完成报表的打印、文件的生成、输出,土过此事可以使用设计状态,也可以通过它来点用相应的报表设计器。、属性:DLLFile:发行报表时需要的dll文件,在5.0以后用户不需要单独发行相应的动态链库文件了。Engine: 指定相应报表生成的目的地,一般的情况下,是RvSystem,也就是说它可以打印、打印预览、生成打印文件。当然也可以选择RvNDRWriter组件,那么报表输出的结果是RTF、HTML、PDF、TXT其中的一种。LoadDesigner: 允许用户调用报表设计器,如果它的值为true,那么最终用户就可以调用报表设计器;如果它的值为False,那么最终用户就没有权力调用报表设计器。ProjectFile:相应报表项目文件,指定详细目录路径。StoreRAV:要将报表文件嵌入到exe文件中,在这里就要填入相应的报表项目文件。、主要方法:()SelectReport方法:Function SelectReport(ReportName:String; FullName:Boolean):Boolean;ReportName是相应的报表名称,FullName则表示是否以报表的全程作为报表的名称。()Execute方法:打印选择的相应报表文件,报表时被SelectReport选择的。RvProject1.Execute;()ExecuteReport方法:RvProject1.ExecuteReport(ReportName:String);ReportName是相应的报表的名称。()Open方法:RvProject1.Open; 打开相应的报表以共操作。()Close方法:RvProject1.Close; 关闭一个报表的操作。二、RvSystem组件打印或者预览报表时,进行打印参数设置的。使用时与RvProject结合。、属性:DefaultDest:指定打印的方式。rdPreview:预览;rdFile:文件;rdPrinter:打印机。RulerType:相应的标尺单位。rtNone:没有标尺;rtHorizCm:横向标尺,单位为厘米;rtVertCm:纵向标尺,单位为厘米;rtBothCm:先是所有的标尺,单位为厘米;rtHorizIn: 横向标尺,单位为英寸;rtVertIn: 纵向标尺,单位为英寸;rtBothIn:所有标尺,单位为英寸;SystemFiler:报表打印文件参数的设置。如果DefaultDest属性为rbFile,则需要设置这里的属性值。SystemOptions:所有报表输出设置属性。SystemPreview:报表预览参数的设置。如果DefaultDest属性为rdPreview,则需要设置这里的属性值。SystemPrinter:报表打印参数的设置。如果DefaultDest属性为rdPrinter ,则需要设置这里的属性值。SystemSetup:是对是否允许打印,是否允许打印机设置等参数的设置。TitlePreview:更改报表预览的窗体的名称,例如可以将Report Preview改为报表预览。TitleSetup:更改报表输出窗体的名称,例如可以将Output Options改为输出设置。TitleStatus:报表状态窗体名称,例如可以将Report Status改为报表状态。、主要方法:OverridePreview方法,OverrideSetup方法,OverrideStatus方法:这三个方法可以对报表设置、打印设置、报表预览窗体进行覆盖,在后面会介绍如何通过这几个方法是窗体为中文。三、NDRWriter组件使用该组件实现自定义报表预览。四、RvDataSetConnection组件,RvTableConnection组件, RvQueryConnection组件使用这三个组件实现数据库的连接。五、RvRenderPDF组件, RvRenderHTML组件, RvRenderRTF组件,RvRenderText组件报表生成相应文件的组件,可让报表生成相应的pdf、html、rtf、text文件。但生成文件对中文不支持,会出现乱码。前面两篇,向大家介绍了RAVE的组件,从今天开始向大家介绍如何建立报表。首先要感谢li jack等各位朋友给我发的电子邮件,鼓励我继续写下去。今天也查了一下RAVE一词的意思。 RAVE在辞典上的翻译为“咆哮”。 rave-up喧闹的宴会, 狂欢聚会,我们经常也听到锐舞派对,也就是RAVE PARTY。 要对Rave文化追根溯源其实不太容易,并非是因为其无从追溯,恰恰相反,正因为它涵盖的面太广,根基太深,所以反而让人有些无从入手。从远的来说,Rave与各块大陆上土著部落的祭典仪式有着相当的渊源,因为这些祭典通常也是通过音乐与紧密的鼓点而使人进入某种超验状态;从近的来说,Rave又与60年代的嬉皮文化与迷幻实验有着密不可分的关系,两代年轻人除了装扮不同,许多心理状态与行为方式其实都有值得注意的相似之处。真正当代的将新式音乐与舞曲相结合的Rave运动起源于英国。10多年前,Rave首先出现在曼彻斯特和伊比沙岛(英国著名度假胜地)。1987年末及1988年初,两个并无关系的团体-Schoom和Genesis P开始在英国组织彻夜的舞会,前者是以house音乐为主,而后者以hardcore为主。与此同时,Rave在德国登陆,在柏林等大城市很受欢迎。很快,Rave在英德两地吸引了数以万计的青少年,更吸引了许多来自美国的DJ。 现在Rave已经是欧、美、日,甚至港台最时兴、最UNDERGROUND的一种青少年娱乐形式,Rave 文化从一开始便被打上了高科技的烙印,从急速疯狂的前卫电子舞曲,新奇剌激的影像视觉,到Sharp得眼花缭乱的装束,Rave与E-Life,已经成为科技对青年文化影响的见证。当然我也不知道为什么Nevrona公司把这个报表组件叫做rave,也许和锐舞有着一定的关系吧,就像java咖啡。一、建立一张简单的报表言归正传,我们开始建立一张简单的报表,打开Delphi7, 新建一个工程,打开Tools下的Rave Designer,在Rave 设计器的page1中,拖放Text,我们在text属性中写入文字内容,例如,“我的第一张报表” ,通过Font属性更改字体和字的大小,颜色等。拖放Memo组件,在text属性中输入文字可以看到一个多行的文本。拖放Bitmap组件,在FileLink属性中选取插入图片的位置,就可以看到在报表中显示了一张图片。点击Execute Report或者F9,则查看到运行后报表。 接下来,对在可视环境中设计好的报表保存,可视化的报表就保存为*.rav文件。那么在delphi程序中如何调用呢?在delphi中拖放RvProject、RvSystem组件,并且把RvProject的Engine属性连接为RvSystem1。RvProject1的ProjectFile属性,选择为我们刚才保存的.rav文件。再在form1上放置一个Button,添加click 事件,代码如下:procedure TForm1.Button1Click(Sender: TObject);beginRvProject1.Execute ; /或者 RvProject1.ExecuteReport(Report1);end;运行程序,点击按钮,就可以看到我们想要的报表了,您可能注意到,打印设置,报表预览的窗体都是英文的,如何使它显示中文我们在以后会介绍,不过我们刚才在窗体中放入了RvSystem组件,有TitlePreview、TitleSetup、TitleStatus三个属性,更改后可以看到我们窗体的标题栏显示的是您所希望显示的中文标题。RvSystem组件有很多我们需要的属性,将SystemPrinter的Orientation属性设置为poLandScape,则报表显示为横向的。将SystemPreview 的FormStatus属性设置为wsMaximized则报表预览的窗体最大化显示。好了,这样我们就完成了一张简单的报表。二、利用程序设计一张报表上面向大家介绍了建立一张简单报表的过程,下面向大家介绍rave报表代码编程实例。窗体上放置组件:RvSystem, Button即可。具体代码如下:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, RpDefine, RpBase, RpSystem;typeTForm1 = class(TForm)RvSystem1: TRvSystem;Button1: TButton;procedure RvSystem1Print(Sender: TObject);procedure Button1Click(Sender: TObject);private Private declarations public Public declarations end;varForm1: TForm1;implementation$R *.dfmprocedure TForm1.RvSystem1Print(Sender: TObject);varI1: integer;S1: string20;S2: string20;Bitmap: TBitmap;PolyLineArr: array1.6 of TPoint;beginwith Sender as TBaseReport do begin 打印表头和表尾 SectionTop := 0.75;/顶端SetFont(黑体,26);/设置字体Underline := true;/下划线Home;YPos := 1.0;FontRotation :=20;/旋转角度PrintCenter(我的报表,PageWidth / 2);SetFont(宋体,10);SectionBottom := 10.75;PrintFooter(第 + IntToStr(CurrentPage) + 页,pjLeft);/页码PrintFooter(日期: +DateToStr(Date)+ ,pjRight);/日期SectionBottom := 10.5;YPos := 1.5;SetFont(宋体,12);SetTopOfPage;Home; 打印列标题 ClearTabs;SetPen(clBlack,psSolid,1,pmCopy); 设置画笔为一个点宽 SetTab(0.5,pjCenter,3.5,0,BOXLINEALL,0);SetTab(NA,pjCenter,1.0,0,BOXLINEALL,0);SetTab(NA,pjCenter,1.5,0,BOXLINEALL,0);SetTab(NA,pjCenter,1.5,0,BOXLINEALL,0);Bold := true;Tab(-2,NA,-2,-2,NA); 画出具有粗边框的表格 Print(Name);Tab(NA,NA,-2,-2,NA);Print(Number);Tab(NA,NA,-2,-2,NA);Print(Amount 1);Tab(NA,-2,-2,-2,NA);Println(Amount 2);Bold := false; 打印具有边框的数据 ClearTabs;SetTab(0.5,pjLeft,3.5,2,BOXLINEALL,0);SetTab(NA,pjCenter,1.0,2,BOXLINEALL,0);SetTab(NA,pjRight,1.5,2,BOXLINEALL,10);SetTab(NA,pjRight,1.5,2,BOXLINEALL,0);for I1 := 1 to 10 do beginStr(I1 * 1.23:2:2,S1);Str(I1 * 98.76:2:2,S2);Print(#9LastName + IntToStr(I1) + , );SetFont(Times New Roman,8);Print(FirstName M.);SetFont(Times New Roman,12);Println(#9 + IntToStr(I1) + #9$ + S1 + #9$ + S2);end; for 打印具有阴影的数据 ClearTabs;SetTab(0.5,pjLeft,3.5,2,BOXLINENONE,0);SetTab(NA,pjCenter,1.0,2,BOXLINENONE,0);SetTab(NA,pjRight,1.5,2,BOXLINENONE,0);SetTab(NA,pjRight,1.5,2,BOXLINENONE,0);for I1 := 11 to 20 do beginIf Odd(I1) then beginTabShade := 0;end else beginTabShade := 15;end; else Str(I1 * 1.23:2:2,S1);Str(I1 * 98.76:2:2,S2);Print(#9LastName + IntToStr(I1) + , );SetFont(Times New Roman,8);Print(FirstName M.);SetFont(Times New Roman,12);Println(#9 + IntToStr(I1) + #9$ + S1 + #9$ + S2);end; for ClearTabs; 分栏报表 ClearTabs;SetTopOfPage;SectionBottom := 8.0;Home;SetFont(宋体,12);Bold := true;Underline := true;Print( 分栏报表 (LinesLeft/ColumnLinesLeft/LineNum/ColumnNum));SetTopOfPage; Set top of page to current YPos Bold := false;Underline := false;Italic := false;Home; Goto home position SetColumns(4,0.5); Create 4 columns with 0.5 between each while ColumnLinesLeft 0 do beginPrintln(IntToStr(LinesLeft) + / + IntToStr(ColumnLinesLeft) + / +IntToStr(LineNum) + / + IntToStr(ColumnNum);end; while 具有边框的分栏报表 ClearTabs;SetTopOfPage;SectionBottom := 10.5;Home;SetFont(Times New Roman,12);Bold := true;Italic := true;Print(Boxed Columns);SetTopOfPage; Set top of page to current YPos Bold := false;Italic := false;Home; Goto home position ClearTabs;SetPen(clBlack,psSolid,1,pmCopy);SetTab(0.5,pjCenter,0.375,0,BOXLINEALL,0);SetTab(NA,pjCenter,0.375,0,BOXLINEALL,0);SetTab(NA,pjCenter,0.375,0,BOXLINEALL,0);SetTab(NA,pjCenter,0.375,0,BOXLINEALL,0);SetColumns(4,0.5); Create 4 columns with 0.5 between each while ColumnLinesLeft 0 do beginif LineNum = 1 then beginTabShade := 15;Println(#9LL#9CLL#9L#9C#); 打印标题栏 end else beginTabShade := 0;Println(#9 + IntToStr(LinesLeft) + #9 + IntToStr(ColumnLinesLeft) +#9 + IntToStr(LineNum) + #9 + IntToStr(ColumnNum);end; else end; while SetColumns(1,0); 在指定位置绘出文本 NewPage;OriginX := 0.0; Set origin to normal OriginY := 0.0;GotoXY(1.0,1.5);Print(Text 1.0,1.5);GotoXY(6.0,1.5);Println(Text 6.0,1.5);GotoXY(2.0,2.0);Println(Text 2.0,2.0);GotoXY(3.0,2.5);Println(Text 3.0,2.5);* 图形图片*NewPage;ResetSection;SetFont(Arial,24);Underline := true;Home;PrintCenter(Graphics Page Demo,PageWidth / 2);SetFont(Times New Roman,8);SectionBottom := 10.75; Temporarily move the section bottom down PrintFooter(Page + IntToStr(CurrentPage),pjLeft);PrintFooter(Date 01/20/95,pjRight);SectionBottom := 10.5; Reset section bottom OriginX := 0.0;OriginY := 0.5;SetFont(Arial,10); 半圆弧线SetPen(clBlack,psSolid,-2,pmCopy); Set pen to black 2/100ths wide YPos := 0.95;PrintCenter(Arc() and Chord(),2.125);Arc(1.125,1.0,3.125,3.0,3.125,2.0,0.0,0.0);SetBrush(clBlack,bsClear,nil);Chord(1.125,1.0,3.125,3.0,0.0,0.8,3.125,2.25); 饼图 YPos := 0.95;PrintCenter(Pie(),4.25);SetPen(clBlack,psSolid,-2,pmCopy); Set pen to black 2/100ths wide SetBrush(clBlack,bsHorizontal,nil);Pie(3.25,1.0,5.25,3.0,5.25,2.0,0.0,0.0);SetBrush(clBlack,bsVertical,nil);Pie(3.25,1.0,5.25,3.0,0.0,0.0,3.25,7.0);SetBrush(clBlack,bsBDiagonal,nil);Pie(3.25,1.0,5.25,3.0,3.25,7.0,5.25,2.0); Bitmap 图片YPos := 3.4;PrintCenter(PaintBitmapRect(),6.375);Bitmap := TBitmap.Create;Bitmap.LoadFromFile(RPDEMO.BMP);PrintBitmapRect(5.375,3.5,7.375,5.5,Bitmap);Bitmap.Free;end;end;procedure TForm1.Button1Click(Sender: TObject);beginRvSystem1.Execute;/执行报表!end;end.好了,这样我们并没有使用rave,仅仅利用程序实现了报表。一、新建一个数据库 以access数据库为例,先新建一个数据库,建立一张表包括的字段为:name、sex、age、province,添加数据,当然不要太少了。首先,我们不考虑Delphi程序的调用,打开rave新建一个report。1FileNew Data Object选择Use Connection String。选择MicrosoftJet 4.0 OLE DB Provider,选择保存的数据库的位置并测试连接成功。ok后,看到报表设计导航区的Data View Dictionary增加了Database1;2FileNew Data Object Driver Data View 选择Database1 Finish 弹出Query Advenced Designr,将Query Advenced Designr的Tables栏的数据表拖放到layout中ok看到报表设计导航区的Data View Dictionary增加了DriveDataView1,扩展后可以看到数据字段;3选ToolsReport WizardsSingle Table 选DriveDataView1,选择数据库字段Report Title改为“个人情况报表”。好了之后,可以看到在page中生成了报表。4按F9或者快捷按钮Execute Report,你就可以看到连接到数据库的报表了,rave报表根据数据量的多少自动分页。根据需要更改格式,再预览,直到是你所想要的报表格式。 这时候就很简单的完成了一张报表,当然有些人也许很看到这样设计出来的报表的标题在报表的第一页显示了后,在其他页并没有显示。怎么样让标题在每一页显示呢?选到TitleBand,在设置BandStyle在Print Occurrence把New page打勾选中,这样在预览你就会发现,这时生成的报表每一页都会有标题。二、设计连接数据库的报表当然,我们的报表是用程序调用的,那么我们在delphi中来设计连接数据库的报表。1.新建工程,在窗体上放置以下组件:RvProject,RvSystem,RvDataSetConnection,ADOConnection,ADOTable,DataSource,Button,DBGrid。设置相应的数据库连接可以看到在DBGrid中显示了数据,具体的设置在这里不进行讲解了,请参考相应的数据库书。RvSystem1的Engine为RvSystem1,RvProjectFile选择保存了的为*.Rav文件。RvDataSetConnection1的DataSet属性设置为:ADOTable1。 2.打开Rave设计器打开*.Rav文件。3.FileNew Data ObjectDirect Data View选择RvDataSetConnection1,Finish看到报表设计导航区的Data View Dictionary增加了DataView1,扩展后可以看到数据字段。4.利用前例步骤3,同样的方法,进行报表的可视化设计。在可视化设计时,注意看生成的简单数据库代码的组成部分,注意TitleBand,DataBand, Band的属性设置。当然我们也可以不用Report Wizards自动生成也可以自己来根据需要直接做报表。步骤是:1)添加组件页的Region组件,来描述报表的范围。2)添加Band,Band, DataBand组件,设置相应的BandStyle 和Dataview属性。3)在DataBand中添加,DataText选择其Dataview属性和DataFile属性。4)预览即可,如果不能正常显示,注意查看属性的设置,尤其是Dataview属性,同时可以与Report Wizards自动生成的报表进行对比。5.添加如下代码:procedure TForm1.Button1Click(Sender: TObject);beginRvProject1.Open ;RvProject1.ExecuteReport(Report1);RvProject1.Close ;end;6.运行后,点击确定按钮,既显示报表设置窗体,确定后可以看到你想要得窗体。三、关于和数据库连接报表的一些问题:1.上面的例子是直接从数据库输出的报表,如果要输出的报表是根据用户的条件输出,怎么办? 如果是要根据用户的条件输出相应的报表,使用Query组件,当然要是涉及到存储过程的操作,也是一样的阿。选择相应的数据库访问组件,将RvDataSetConnection的Dataset属性连接到数据库访问组件即可。2.我在数据库表中的字段是中文的,在Rave中连接数据库,DataView不能显示我的字段,并且提示“DataView1已经存在!” ,怎么办?出现这样的问题主要是DataView1的name属性不支持中文名,而不能根据数据段名来命名,你将DataView1更改为相应的英文名,更改Fieldname为相应的字段中文,刷新DataView,还会有提示,同样更改name和Fieldname属性,直到你要的字段都更改好为止。3.默认的报表是竖排的,怎么样才能将页面设置为横向的?关于页面的设置请注意熟悉RvSystem的属性。RvSystem1.SystemPrinter.Orientation :=poLandScape; /页面为横向的RvSystem1.SystemPreview.FormState := wsMaximized; /预览窗体最大化RvSystem1.SystemPreview.MarginPercent :=3; /报表页面据预览窗体的边距。当然还有很多的设置TitleSetup,TitleStatus,TitlePreview属性可以将你的报表设置,报表预览的窗体的标题改为你想要的。当然我们最基本的是要改为中文的阿。关于怎么让你的报表预览,报表设置窗体为中文的我在后面会专门介绍。在Delphi 7 中使用RAVE报表(四)中讲解了和数据库连接的报表,有朋友提出了问题,所以在用一篇文章讲解使用Query动态查询和存储过程连接数据库的报表。因为要使用到存储过程,我们使用SQL_Server2000数据库,建立数据库Infotest,建立数据表InfoTable 字段为: name、sex、age、province ,添加数据。数据库的部分不进行过多地讲解。在窗体上放置Database,Query,DataSource,RvQueryConnection,DBGrid组件,连接到数据库,查询所有陕西的按钮的事件为:procedure TForm1.Button1Click(Sender: TObject);beginQuery1.SQL.Clear ;Query1.SQL.Add(SELECT * FROM InfoTable WHERE (province =:pro) );Query1.ParamByName(pro).AsString :=陕西;Query1.ExecSQL ;Query1.Active :=True;end; 运行点击后,可以查看到DBGrid显示了查看的结果,这样完成了第一步-动态查询的过程。将程序运行,查询,然后打开Rave,记住不要关掉查询的程序。File=New Data Object=Direct Data View=选择RvQueryConnection1= Finish=看到报表设计导航区的Data View Dictionary增加了DataView1,扩展后可以看到数据字段;选Tools=Report Wizards=Single Table=选DataView1,选择数据库字段=Report Title改为“个人情况报表”。好了之后,可以看到在page中生成了报表。 然后,保存*.rav文件关闭程序,添加报表预览按钮事件以及RvQueryConnection1的GetCols和GetRow事件。procedure TForm1.Button2Click(Sender: TObject);beginWith RvProject1.ProjMan dobeginRvProject1.Open ;RvQueryConnection1.ExecGetCols ; /得到列名RvQueryConnection1.ExecGetRow ; /得到记录RvProject1.ExecuteReport(Report2);Close ;end;end; procedure TForm1.RvQueryConnection1GetCols(Connection: TRvCustomConnection);beginConnection.WriteField(name,dtString

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论