知识大全 Delphi7中使用RAVE报表
Posted 知
篇首语:少年乘勇气,百战过乌孙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi7中使用RAVE报表相关的知识,希望对你有一定的参考价值。
Delphi7中使用RAVE报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
最近刚刚做完一个项目 使用到了RAVE进行报表设计 在使用中也查阅了很多资料 但总觉得网上的资料过于分散 而且都不是很全面 所以决定将如何在Delphi 中使用RAVE报表写成几篇文章 由于本人从小语文学得不好 不是写作高手 这次也是第一次写这样的文章 希望看到这篇文章的网友能多提意见 欢迎大家指教 可以给我留言 言归正传 在我们要给用户编写的软件中往往需要生成各种各样的报表 报表是数据库中数据的最终表现形式 在Delphi 以前 编写报表都在使用Qusoft公司的Quick report 而且在Delphi中集成了Quick report 在Borland Delphi? Studio 集成开发环境(IDE)的控件面板中取消了Quick report项 取而代之以Nevrona公司Rave Reports项 且在Tools中有Rave Designer 打开Rave Designer 我们可以如图所示的一个报表设计界面 开发人员可以开发出符合用户要求的报表来 而且这个报表的设计 使用与Delphi集成开发环境几乎是完全的一样 这可能是Rave与其它的报表组件最大的外观上的不同 我在使用中下载了Rave Reports v 你可以在或者下载 在写这篇文章时 上已经发布了Rave Reports 不过文章还是以Rave Reports v 为准 打开Delphi 可以控件面板看到如图 >> Delphi 下的Rave 打开Tools中的Rave 看到的报表设计界面如图 >> Rave 的报表设计界面 首先 介绍一下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 ponent 画线组件 所画的线较灵活 可以看到其属性入图 有颜色 线宽 线行等属性 设计者根据需要更改属性 改变线的长短位置 选中线条后 选择一个端点则光标会变为十子型 拖动即可 > Hline ponent 画水平线组件 Vline ponent 画垂直线组件 Rectangle ponent 画长方形组件 可以使用fill组件填充 Square ponent 画正方形组件 可以使用fill组件填充 Ellipse ponent 画椭圆组件 可以使用fill组件填充 Circle ponent 画圆形组件 可以使用fill组件填充 Bar Code(条形码)组件页 > PostNetBarCode 打印邮件标签上包括 POSTNET 条码 I of BarCode 打印 Interleaved of 条码 Code BarCode 打印standard and extended Code 条码 Code BarCode 打印 A B and C Code 条码 UPCBarCode 打印 UPC 条码 EANBarCode 打印 EAN 条码 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开始 > 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(求累加和) DataMirror Section 和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结合使用来完成日常报表的统计功能
隔了好长时间终于有时间继续向大家介绍RAVE了 这次主要介绍Delphi 下的Rave组件 打开Delphi 看到的rave页如下 Delphi 下的Rave 包括有RvProject RvSystem RvNDRWriter RvCustomConnection RvDataSetConnection RvTableConnection RvQueryConnection RvRenderPreview RvRenderPrinter RvRenderPDF RvRenderHTML RvRenderRTF RvRenderText这几个组件 lRvProject组件 在使用rave报表中 这个组件是最为重要的一个 是使用频率最高的一个组件 开发人员可以通过这个报表完成报表的打印 文件的生成 输出 土过此事可以使用设计状态 也可以通过它来点用相应的报表设计器 属性 DLLFile:发行报表时需要的dll文件 在 以后用户不需要单独发行相应的动态链库文件了 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选择的 RvProject Execute; ExecuteReport方法 RvProject ExecuteReport(ReportName:String); ReportName是相应的报表的名称 Open方法 RvProject Open; 打开相应的报表以共操作 Close方法 RvProject Close; 关闭一个报表的操作 l 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方法 这三个方法可以对报表设置 打印设置 报表预览窗体进行覆蓋 在后面会介绍如何通过这几个方法是窗体为中文 l NDRWriter组件 使用该组件实现自定义报表预览 l RvDataSetConnection组件 RvTableConnection组件 RvQueryConnection组件 使用这三个组件实现数据库的连接 l RvRenderPDF组件 RvRenderHTML组件 RvRenderRTF组件 RvRenderText组件 报表生成相应文件的组件 可让报表生成相应的pdf rtf text文件 但生成文件对中文不支持 会出现乱码
前面两篇 向大家介绍了RAVE的组件 从今天开始向大家介绍如何建立报表 首先要感谢li jack等各位朋友给我发的电子邮件 鼓励我继续写下去 今天也查了一下RAVE一词的意思 RAVE在辞典上的翻译为 咆哮 rave up喧闹的宴会 狂欢聚会 我们经常也听到锐舞派对 也就是RAVE PARTY 要对Rave文化追根溯源其实不太容易 并非是因为其无从追溯 恰恰相反 正因为它涵盖的面太广 根基太深 所以反而让人有些无从入手 从远的来说 Rave与各块大陆上土著部落的祭典仪式有着相当的渊源 因为这些祭典通常也是通过音乐与紧密的鼓点而使人进入某种超验状态 从近的来说 Rave又与 年 代的嬉皮文化与迷幻实验有着密不可分的关系 两代年轻人除了装扮不同 许多心理状态与行为方式其实都有值得注意的相似之处 真正当代的将新式音乐与舞曲相结合的Rave运动起源于英国 多年前 Rave首先出现在曼彻斯特和伊比沙岛(英国著名度假胜地) 年末及 年初 两个并无关系的团体 Schoom和Genesis P开始在英国组织彻夜的舞会 前者是以house音乐为主 而后者以hardcore为主 与此同时 Rave在德国登陆 在柏林等大城市很受欢迎 很快 Rave在英德两地吸引了数以万计的青少年 更吸引了许多来自美国的DJ 现在Rave已经是欧 美 日 甚至港台最时兴 最UNDERGROUND的一种青少年娱乐形式 Rave文化从一开始便被打上了高科技的烙印 从急速疯狂的前卫电子舞曲 新奇剌激的影像视觉 到Sharp得眼花缭乱的装束 Rave与E Life 已经成为科技对青年文化影响的见证 当然我也不知道为什么Nevrona公司把这个报表组件叫做rave 也许和锐舞有着一定的关系吧 就像java咖啡 言归正传 我们开始建立一张简单的报表 打开Delphi 新建一个工程 打开Tools下的Rave Designer 在Rave 设计器的page 中 拖放Text 我们在text属性中写入文字内容 例如 我的第一张报表 通过Font属性更改字体和字的大小 颜色等 拖放Memo组件 在text属性中输入文字可以看到一个多行的文本 拖放Bitmap组件 在FileLink属性中选取插入图片的位置 就可以看到在报表中显示了一张图片 点击[Execute Report]或者F 则查看到运行后报表
上一篇向大家介绍了建立一张简单报表的过程 这篇文章向大家介绍rave报表代码编程实例 窗体上放置组件 RvSystem Button即可 具体代码如下 ################################################################################## unit Unit ; interface uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls RpDefine RpBase RpSystem; type TForm = class(TForm) RvSystem : TRvSystem; Button : TButton; procedure RvSystem Print(Sender: TObject); procedure Button Click(Sender: TObject); private Private declarations public Public declarations end; var Form : TForm ; implementation $R * dfm procedure TForm RvSystem Print(Sender: TObject); var I : integer; S : string[ ]; S : string[ ]; Bitmap: TBitmap; PolyLineArr: array[ ] of TPoint; begin with Sender as TBaseReport do begin 打印表头和表尾 SectionTop := ; //顶端 SetFont( 黑体 ); //设置字体 Underline := true; //下划线 Home; YPos := ; FontRotation := ;//旋转角度 PrintCenter( 我的报表 PageWidth / ); SetFont( 宋体 ); SectionBottom := ; PrintFooter( 第 + IntToStr(CurrentPage) + 页 pjLeft); //页码 PrintFooter( 日期: +DateToStr(Date)+ pjRight); //日期 SectionBottom := ; YPos := ; SetFont( 宋体 ); SetTopOfPage; Home; 打印列标题 ClearTabs; SetPen(clBlack psSolid pmCopy); 设置画笔为一个点宽 SetTab( pjCenter BOXLINEALL ); SetTab(NA pjCenter BOXLINEALL ); SetTab(NA pjCenter BOXLINEALL ); SetTab(NA pjCenter BOXLINEALL ); Bold := true; Tab( NA NA); 画出具有粗边框的表格 Print( Name ); Tab(NA NA NA); Print( Number ); Tab(NA NA NA); Print( Amount ); Tab(NA NA); Println( Amount ); Bold := false; 打印具有边框的数据 ClearTabs; SetTab( pjLeft BOXLINEALL ); SetTab(NA pjCenter BOXLINEALL ); SetTab(NA pjRight BOXLINEALL ); SetTab(NA pjRight BOXLINEALL ); for I := to do begin Str(I * : : S ); Str(I * : : S ); Print(# LastName + IntToStr(I ) + ); SetFont( Times New Roman ); Print( FirstName M ); SetFont( Times New Roman ); Println(# + IntToStr(I ) + # $ + S + # $ + S ); end; for 打印具有阴影的数据 ClearTabs; SetTab( pjLeft BOXLINENONE ); SetTab(NA pjCenter BOXLINENONE ); SetTab(NA pjRight BOXLINENONE ); SetTab(NA pjRight BOXLINENONE ); for I := to do begin If Odd(I ) then begin TabShade := ; end else begin TabShade := ; end; else Str(I * : : S ); Str(I * : : S ); Print(# LastName + IntToStr(I ) + ); SetFont( Times New Roman ); Print( FirstName M ); SetFont( Times New Roman ); Println(# + IntToStr(I ) + # $ + S + # $ + S ); end; for ClearTabs; 分栏报表 ClearTabs; SetTopOfPage; SectionBottom := ; Home; SetFont( 宋体 ); 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( ); Create columns with beeen each while ColumnLinesLeft > do begin Println(IntToStr(LinesLeft) + / + IntToStr(ColumnLinesLeft) + / + IntToStr(LineNum) + / + IntToStr(ColumnNum)); end; while 具有边框的分栏报表 ClearTabs; SetTopOfPage; SectionBottom := ; Home; SetFont( Times New Roman ); 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 pmCopy); SetTab( pjCenter BOXLINEALL ); SetTab(NA pjCenter BOXLINEALL ); SetTab(NA pjCenter BOXLINEALL ); SetTab(NA pjCenter BOXLINEALL ); SetColumns( ); Create columns with beeen each while ColumnLinesLeft > do begin if LineNum = then begin TabShade := ; Println(# LL # CLL # L# # C# ); 打印标题栏 end else begin TabShade := ; Println(# + IntToStr(LinesLeft) + # + IntToStr(ColumnLinesLeft) + # + IntToStr(LineNum) + # + IntToStr(ColumnNum)); end; else end; while SetColumns( ); 在指定位置绘出文本 NewPage; OriginX := ; Set origin to normal OriginY := ; GotoXY( ); Print( Text @ ); GotoXY( ); Println( Text @ ); GotoXY( ); Println( Text @ ); GotoXY( ); Println( Text @ ); *** 图形 图片*** NewPage; ResetSection; SetFont( Arial ); Underline := true; Home; PrintCenter( Graphics Page Demo PageWidth / ); SetFont( Times New Roman ); SectionBottom := ; Temporarily move the section bottom down PrintFooter( Page + IntToStr(CurrentPage) pjLeft); PrintFooter( Date / / pjRight); SectionBottom := ; Reset section bottom OriginX := ; OriginY := ; SetFont( Arial ); 半圆 弧线 SetPen(clBlack psSolid pmCopy); Set pen to black / ths wide YPos := ; PrintCenter( Arc() and Chord() ); Arc( ); SetBrush(clBlack bsClear nil); Chord( ); 饼图 YPos := ; PrintCenter( Pie() );
以access数据库为例 先新建一个数据库 建立一张表包括的字段为 [name] [sex] [age] [province] 添加数据 当然不要太少了 首先 我们不考虑Delphi程序的调用 打开rave新建一个report .[File]àNew Data Objectà选择Use Connection String 选择[Microsoft Jet OLE DB Provider] 选择保存的数据库的位置并测试连接成功 [ok]后 看到报表设计导航区的Data View Dictionary增加了Database .[File]àNew Data Object Driver Data View 选择Database [Finish] 弹出Query Advenced Designr 将Query Advenced Designr的Tables栏的数据表拖放到layout中à[ok]à看到报表设计导航区的Data View Dictionary增加了DriveDataView 扩展后可以看到数据字段 .选[Tools]àReport WizardsàSingle Table 选DriveDataView 选择数据库字段Report Title改为 个人情况报表 好了之后 可以看到在page中生成了报表 .按[F ]或者快捷按钮[Execute Report] 你就可以看到连接到数据库的报表了 rave报表根据数据量的多少自动分页 根据需要更改格式 再预览 直到是你所想要的报表格式 >> 这时候就很简单的完成了一张报表 当然有些人也许很看到这样设计出来的报表的标题在报表的第一页显示了后 在其他页并没有显示 怎么样让标题在每一页显示呢? 选到TitleBand 在设置BandStyle在Print Occurrence把New page打勾选中 这样在预览你就会发现 这时生成的报表每一页都会有标题 当然 我们的报表时用程序调用的 那么我们在delphi中来设计连接数据库的报表 新建工程 在窗体上放置以下组件 RvProject RvSystem RvDataSetConnection ADOConnection ADOTable DataSource Button DBGrid 设置相应的数据库连接可以看到在DBGrid中显示了数据 具体的设置在这里不进行讲解了 请参考相应的数据库书 RvSystem 的Engine为RvSystem RvProjectFile选择保存了的为* Rav文件 RvDataSetConnection 的DataSet属性设置为 ADOTable >打开Rave设计器打开* Rav文件 [File]àNew Data ObjectàDirect Data Viewà选择RvDataSetConnection [Finish]看到报表设计导航区的Data View Dictionary增加了DataView 扩展后可以看到数据字段 利用前例步骤 同样的方法 进行报表的可视化设计 在可视化设计时 注意看生成的简单数据库代码的组成部分 注意TitleBand DataBand Band的属性设置 当然我们也可以不用Report Wizards自动生成也可以自己来根据需要直接做报表 步骤是 )添加组件页的Region组件 来描述报表的范围 )添加Band Band DataBand组件 设置相应的BandStyle 和Dataview属性 )在DataBand中添加 DataText选择其Dataview属性和DataFile属性 )预览即可 如果不能正常显示 注意查看属性的设置 尤其是Dataview属性 同时可以与Report Wizards自动生成的报表进行对比 添加如下代码 procedure TForm Button Click(Sender: TObject); begin RvProject Open ; RvProject ExecuteReport( Report ); RvProject Close ; end; 运行后 点击[确定]按钮 既显示报表设置窗体 确定后可以看到你想要得窗体 关于和数据库连接报表的一些问题 )上面的例子是直接从数据库输出的报表 如果要输出的报表是根据用户的条件输出 怎么办? 如果是要根据用户的条件输出相应的报表 使用Query组件 当然要是涉及到存储过程的操作 也是一样的阿 选择相应的数据库访问组件 将RvDataSetConnection的Dataset属性连接到数据库访问组件即可 )我在数据库表中的字段是中文的 在Rave中连接数据库 DataView不能显示我的字段 并且提示 DataView 已经存在! 怎么办? 出现这样的问题主要是DataView 的name属性不支持中文名 而不能根据数据段名来命名 你将DataView 更改为相应的英文名 更改Fieldname为响应的字段中文 刷新DataView 还会有提示 同样更改name和Fieldname属性 直到你要的字段都更改好为止 )默认的报表时竖排的 怎么样才能将页面设置为横向的? 关于页面的设置请注意熟悉RvSystem的属性 RvSystem SystemPrinter Orientation :=poLandScape; //页面为横向的 RvSystem SystemPreview FormState := wsMaximized; //预览窗体最大化 RvSystem SystemPreview MarginPercent := ; //报表页面据预览窗体的边距 当然还有很多的设置TitleSetup TitleStatus TitlePreview属性可以将你的报表设置 报表预览的窗体的标题改为你想要的 当然我们最基本的是要改为中文的阿 关于怎么让你的报表预览 报表设置窗体为中文的我在后面会专门介绍
在Delphi 中使用RAVE报表(五)中讲解了和数据库连接的报表 有朋友提出了问题 所以在用一篇文章讲解使用Query动态查询和存储过程连接数据库的报表 因为要使用到存储过程 我们使用SQL_Server 数据库 建立数据库Infotest 建立数据表InfoTable 字段为: [name] [sex] [age] [province] 添加数据 数据库的部分不进行过多地讲解 在窗体上放置Database Query DataSource RvQueryConnection DBGrid组件 连接到数据库 查询所有[陕西]的按钮的事件为 procedure TForm Button Click(Sender: TObject); begin Query SQL Clear ; Query SQL Add( SELECT * FROM InfoTable WHERE (province =:pro) ); Query ParamByName( pro ) AsString := 陕西 ; Query ExecSQL ; Query Active :=True; end; >> 运行点击后 可以查看到DBGrid显示了查看的结果 这样完成了第一步 动态查询的过程 将程序运行 [查询] 然后打开Rave 记住不要关掉查询的程序 [File]=〉New Data Object=〉Direct Data View=〉选择RvQueryConnection =〉 [Finish]=〉看到报表设计导航区的Data View Dictionary增加了DataView 扩展后可以看到数据字段 选[Tools]=〉Report Wizards=〉Single Table=〉选DataView 选择数据库字段=〉Report Title改为 个人情况报表 好了之后 可以看到在page中生成了报表 > 然后 保存* rav文件关闭程序 添加[报表预览]按钮事件 以及RvQueryConnection 的GetCols和GetRow事件 procedure TForm Button Click(Sender: TObject); begin With RvProject ProjMan do begin RvProject Open ; RvQueryConnection ExecGetCols ; //得到列名 RvQueryConnection ExecGetRow ; //得到记录 RvProject ExecuteReport( Report ); Close ; end; end; procedure TForm RvQueryConnection GetCols( Connection: TRvCustomConnection); begin Connection WriteField( name dtString ); Connection WriteField( sex dtString ); Connection WriteField( age dtInteger ); Connection WriteField( province dtString ); end; procedure TForm RvQueryConnection GetRow(Connection: TRvCustomConnection); begin Connection WriteStrdata( DBGrid Fields[ ] value); Connection WriteStrdata( DBGrid Fields[ ] value); Connection WriteIntdata( DBGrid Fields[ ] value); Connection WriteStrdata( DBGrid Fields[ ] value); end; 在运行程序 这样就完成了一个根据动态查询生成的报表 使用存储过程的报表方法如下: 首先你要建立你的存储过程 建立存储如下 虽然这样的简单的查询用存储过程没有必要 这里也只是简单的示例: ALTER procedure pr_test as DECLARE @chrnSQL nvarchar( ) SELECT @chrnSQL= select * FROM InfoTable where age> EXEC sp_ExecuteSql @chrnSQL 在上例的程序中 增加DBGrid StoredProc DataSource RvDataSetConnection [运行存储过程]按钮 和[报表预览]按钮 DataSource 的dataset属性设置为StoredProc DBGrid 的DataSource设置为DataSource StoredProc 连接数据库 StoredProcName := pr_test ; RvDataSetConnection 的dataset属性设置为StoredProc [运行存储过程]按钮的click事件为 with StoredProc do begin prepare; StoredProc Active :=True; end; 运行程序 看到DBGrid 显示了存储过程查询的结果 将程序运行 [运行存储过程] 然后打开Rave 记住不要关掉查询的程序 然后 用和上例相同的方法 添加如下代码 [File]=〉New Data Object=〉Direct Data View=〉选择RvDataSetConnection =〉 [Finish]=〉看到报表设计导航区的Data View Dictionary增加了DataView 扩展后可以看到数据字段 选[Tools]àReport WizardsàSingle Tableà 选DataView 选择数据库字段àReport Title改为 个人情况报表 好了之后 可以看到在page中生成了报表 保存文件 关闭程序 添加[报表预览]按钮事件 以及RvDataSetConnection 的GetCols和GetRow事件 procedure TForm Button Click(Sender: TObject); begin With RvProject ProjMan do begin RvProject Open ; RvDataSetConnection ExecGetCols ; //得到列名 RvDataSetConnection ExecGetRow ; //得到记录 RvProject ExecuteReport( Report ); Close ; end; end; procedure TForm RvDataSetConnection GetCols( Connection: TRvCustomConnection); begin Connection WriteField( name dtString ); 列名 Connection WriteField( sex dtString ); Connection WriteField( age dtInteger ); Connection WriteField( province dtString ); end; procedure TForm RvDataSetConnection GetRow( Connection: TRvCustomConnection); begin Connection WriteStrdata( DBGrid Fields[ ] value); Connection WriteStrdata( DBGrid Fields[ ] value); Connection WriteIntdata( DBGrid Fields[ ] value); Connection WriteStrdata( DBGrid Fields[ ] value); end; 好了 这篇的讲解应该大家都明白和数据库有关的报表怎么设计了 总结一下 通过DBGrid数据感应组件得到查询的结果 通过和rave的连接组件(RvDataSetConnection RvQueryConnection等)的GetCols和GetRow事件往报表当中添加数据 cha138/Article/program/Delphi/201311/8385相关参考
Delphi7中使用RAVE报表(四) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一新建一个数
Delphi7中使用RAVE报表(五) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Delph
Delphi7中使用RAVE报表(三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 前面两篇向大
Delphi7中使用RAVE报表(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!最近刚刚做完一
Delphi7中使用RAVE报表(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!隔了好长时间终
Delphi7中快速得到本机IP地址 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!朋友们在用Del
初识Rave 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 初识Rave 其实在Delphi发
Delphi7对XML的支持分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Delphi支持对
Delphi7.0常用函数速查手册 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!函数由一句或多句代
财务报表中的三表,具体是哪三个报表?知道的麻烦回答一下。谢了。一般企业对外报表的三个报表是:损益表、资产负债表、企业所得税报表(季度报表),企业内部的报表不含企业所得税表,而是现金流量表。谁知道财务报