Delphi报表和图表设计
Delphi7报表制作入门

Delphi报表制作入门Delphi 7.0 中实现报表的方法称为 Rave。
Rave 报表是一种基于组件的可视化报表设计工具,使用它可以简化设计过程,提高设计效率。
只要将 Rave 报表组件添加到应用程序中后,就可以创建各种类型的报表。
本文将以 ADO 组件连接数据库,向读者介绍怎样利用 Rave Report5.0 快速设计报表。
还是赶快行动起来,体验一下 Rave Reports 的强大功能吧!1.准备好范例数据库,笔者使用 Access 建立数据库Student.mdb,创建一个表:StuInf(学生基本信息),包含Sno(学号),Sname(姓名),Sex(性别),Class(班级),Birthday(出生日期)... 等字段,所有字段名先使用括号中的中文;再写入几条数据备用。
2.启动Delphi7.0 建立一个工程,在窗体上放置一个ADOQuery 控件,设置其ConnectionString 属性,连接数据库 Student,设置 SQL 属性为“select * from StuInf;”,Active 属性为 True 。
为了能看到库中的数据,再往窗体上放置一个DBGrid 和一个 DataSource ,设置相关属性,使 DBGrid 中显示数据。
3.在窗体上添加一个 GroupBox,设置其 Caption 为“选择报表式样”;往其中添加两个 RadioButton ,Caption 分别为“条列形式”、“表格形式”;往窗体上添加一个按钮,Caption 为“显示报表”。
现在,准备工作已经完成了,保存工程,下面开始报表的设计。
4.在窗体上添加一个RvDataSetConnection组件,设置其DataSet为ADOQuery1,这样,就提供了 Rave 报表与数据源之间的连接。
5.在 Delphi 主菜单的 Tools 中选择 RaveDesigner 启动 Rave Reports5.0。
Delphi编程实现Excel报表自动生成和发布

Delphi编程实现Excel报表自动生成和发布文章介绍如何使用Delphi 编程通过定义报表内容描述、Excel 模板文件和服务器描述文件实现Oracle 数据库和Excel 模板文件的数据交换,并以Ftp 方式自动发布到Web 数据发布平台。
标签:Delphi;Excel模板;报表定义;Ftp1 引言随着计算机应用技术的快速发展,Excel 电子表格的普及,工作中常常需要从不同的信息管理系統中查询统计数据并以Excel 表格方式展现报表。
由于行业或者业务部门需求的变化,导致报表格式、种类繁多。
一些复杂报表,需求在软件开发期间都无法明确,为了解决此类问题,采用了表格功能强大的Excel 作为报表模板,Delphi 程序根据报表数据定义动态填入数据,完成数据填充后以Ftp 方式上传填写完数据的文件到Web 数据发布平台,从而实现Excel 报表的自动生成和发布功能。
2 实现原理2.1 按照业务部门的需求,根据需要的报表格式,编辑好Excel报表模板文件;根据报表的数据内容和区域,编写好报表定义文件。
2.2 以报表定义文件文件名作为运行的参数,在操作系统下创建批处理命令,并可以根据实际需要把批处理加入操作系统的计划任务,实现按程序自动运行。
2.3 程序根据报表定义文件的描述,主要做如下操作:①读取指定的Excel 模板文件;②到指定的数据库服务器查询数据并填充Excel 模板文件;③以Ftp 方式上传生成好的Excel报表文件到FTP服务器。
3 实现过程描述3.1 报表定义文件采用可扩展标记语言(XML文件描述),主要内容描述如下:report nameD:\xxxx\template_xxx.xlsD:\xxxx\xxxxxx.xls1ftp server nameftp remote dir……database name1n1,n2,n3,n4select col1,col2,… from table_name…………在Delphi 中使用控件解析方法生成XML 文件接口框架代码,通过生成的接口单元读取XML 文件,主要代码如下:Var xmlReport:IXMLReportType;//定义报表定义文件变量……xmlReport := LoadReport(报表定义XML文件);//读取报表定义文件if length(trim(xmlReport.Ftpserver))>0 then //是否指定FTP上传服务器uplaodFile(xmlReport.output);//上传文件到Ftp服务器……3.2 服务器定义文件文件格式同报表定义文件,主要内容及描述如下:server name user/pwd@ip:port:sid……ftp server namexxx.xxx.xxx.xxx215000usernamepassword……Delphi 处理该文件方法同上,根据指定服务器名称取查找服务器子节点,主要代码如下://根据指定的FTP名称,取服务器定义文件中FTP 中节点for i := 0 to xmlServers.Ftp.ChildNodes.Count - 1 do beginif (trim(xmlServers.Ftp.server[i].Name)= trim(serverName))then begin result := xmlServers.Ftp.server[i];exit;end;end;3.3 采用第三方數据库控件ODAC 访问Oracle 数据库ODAC 全称Oracle Data Access Components,是Oracle 数据存取组件,直接使用Oracle 接口(OCI),在应用中建立连接可以使用ODAC Net 选项无需在客户机上安装Oralce 客户端,仅需TCP/IP 支持,本次开发中使用了TOraSession 和TOraQuery 两个控件,主要代码如下:if oraSession.Connected then oraSession.Close;//关闭数据库连接oraSession.ConnectString := getOracleServerNode (OracleServerNname).ConnectString;//修改连接字串,函数getOracleServerNode 返回变量Oracle 服务器节点;oraSession.Connect;//连接数据库;ToraQuery 的使用方法同Delphi 中TQuery;3.4 Oracle 数据集填充Excel 数据区域根据指定数据区域和SQL语句向Excel模板文件中填写数据,注意点:SQL 语句运行结果和指定数据区域要一一对应。
用Delphi生成Word报告及动态结构表格

第2 4卷 第 3期
20 0 7年 3月
计 算机 应 用与软 件
Co mpu e pl ainsa d S fwae tr Ap i to n ot r c
Vo. 4, . 1 2 No 3
Ma . 0 7 r2 0
用 D lh 生成 Wod报 告 及 动 态 结 构 表 格 e i p r
鲁保玉 杨新芳
( 漯河职业技术学 院 河 南 漯 河 4 20 ) 60 2
摘
要
在 D lh 中用 Wod作为报表输 出工具 可以进 一步扩展应 用程序 的功 能, e i p r 便于用 户对 所生成 的报表进 行二次 加工和 重
复使用 。用 S ̄e e m控件调用 Wod能够较好地实现 D lh 对 Wo r e i p r d的控制。可以在 Wod中创建模板 , D lh 中运用该模 板 生成 r 在 ep i Wod文档。对于文档 中动态 变化 的部分 , r 可预先设置好 书签或关键 字, D lh 中通 过定位 书签或 查找替换 的方 法更新 wod文 在 ep i r 档。对于动态结构表格和 多层次嵌套表格 , 可以通 过巧妙地 运用单元格的拆分与合并功能来创建 。
( u h oain l n eh i Z ol e L o ef n n4 2 0 , hn ) L o eV c t a d T cnc l g ,u h l a 6 0 2 C ia o a aC e e
Ab ta t sr c
I rga ie t ep iU igW oda e ot up tn o[cn ep n u cino p l aina db d a tg o st npo rmswr tnwi D lh . sn r srp r o t ut gto a x a dfn t fa pi t n ea vna e u o t h i o c o
Delphi数据库开发及统计表格设计

Delphi 数据库开发及统计表格设计Delphi 是Borland 公司开发的基于PASCAL 语言的Windows 平台应用程序开发工具,它将可视化编程(Visual Programming) 与面向对象(Object-Oriented) 的卓越优点结合在PASCAL 语言开发平台上,而且同时可以支持Client/Server 模式的SQL 数据库访问与ODBC (开发数据库互连) ,是一个真正面向对象的开发工具。
Delphi 最吸引人的特点是它的强大的数据库访问能力,它主要通过使用数据库引擎(Borland Database Engine,简称BDE)来访问本地数据库和远程数据库。
但对于用户而言,不必直接编程访问BDE ,而只需通过采用窗体(FORM) 和大量方便且实用的数据库访问元件(Component)来实现,通过ReportSmith报表生成器可以生成多种随心所欲的报表。
但是,用ReportSmith 制作的各类报表,只便于输出至打印机上打印出来,若想把报表在屏幕上显示,则还需调用ReportView 。
而ReportView 窗口界面对不太懂Delphi 和Windows 操作的普通用户来说,不直观,也不易操作。
如何制作并在屏幕上显示出直观的二维统计报表,这是本文所要阐述的主要问题。
以表格形式显示数据库内容一般地采用下面两种方式:•纵向列表(如图1)•交叉统计列表(如图2)一、纵向列表Delphi 可以用TDBGRID 控件,以表格形式非常方便地显示单一或多数据库纵向列表。
一般采用两种方法实现:(一)采用TTable 与Tdatasource、TDbgrid 控件在窗体中引入上述三个控件,并在Ttable 中控件指出要访问的数据库存放路径及数据库名,在Tdatasource 控件中指出数据源与Ttable 相连,在TDbgrid 控件中指出显示Tdatasource数据源内容,程序运行后,则显示出如图1所示的数据库纵向列表。
delphi制作报表

批最近刚刚做完一个项目,使用到了RAVE进行报表设计,在使用中也查阅了很多资料,但总觉得网上的资料过于分散,而且都不是很全面,所以决定将如何在Delphi 7中使用RAVE报表写成几篇文章,由于本人从小语文学得不好,不是写作高手,这次也是第一次写这样的文章。
希望看到这篇文章的网友能多提意见,欢迎大家指教。
可以给我留言。
言归正传,在我们要给用户编写的软件中往往需要生成各种各样的报表,报表是数据库中数据的最终表现形式,在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集成开发环境的界面包括标题栏、菜单栏、快捷工具栏、组件栏和一些窗口:·标题栏显示了当前的工程名,位于最上部。
·菜单栏,一些功能可通过菜单栏的菜单命令实现。
Delphi数据库程序设计教程 第13章 报表的设计

13.1.3 TQRBand组件
该组件是一个重要的组件,当为TQuickRep组件设置Bands属性时,报表中就 会创建TQRBand组件。
1. BandType 该属性用来指定BandType组件的边条类型。边条的属性决定了最后在报表中该边 条出现的位置。 2. ForceNewColumn 该属性使报表在打印该边条前创建新的一列。 3. ForceNewPage 该属性使报表在打印该边条前生成新的一页。在列表类型的报表中,如果设置该 属性为True,那么报表的每页将仅仅显示一个记录。在主/明细报表中,如果设置 该属性为True,会使报表的每个主记录生成新的一页,与该主记录相对应的明细记 录均在该页中。 4. LinkBand LinkBand属性用来将报表和边条连接起来,被连接的边条作为当前的边条显示在同 一页中。当前页没有足够的空间打印该边条时,将生成新的一页。 5. HasChild属性 该属性为当前边条生成下一级边条。例如在主/明细报表类型的报表中,为某一个 字段设置该属性,将生成一个边条作为下一级的边条。
该组件是设置报表外观的主要组件,将TQuickRep组件加入到窗体中,它可以定位到窗 体上并扩展成全页的尺寸,给报表一个全页显示的可能。
(1) Bands 该属性是TQuickRep组件比较重要的属性,Bands属性是一个属性集。在设置这些属性时,每设 置一个属性为True,在TQuickRep组件中就会增加一个相应的TQRBand组件。 (2) DataSet 该属性指定主报表将从哪一个数据集中获得数据。对于简单的列表类型的报表中,通常使用一 个数据集。对于一个主/明细表,该属性应该设置为主数据集。 (3) Options Options属性集中有三个属性。FirstPageHeader为True时,在报表的第一页生成页头边条; LastPageFooter为True时,在报表的最后一页生成页脚边条;Compression为True时,以压缩格式 存储报表。 (4) Page 该属性集可以控制报表中页的大小、边、页的方向等。 (5) PrinterSettings 该属性集用来选择想要打印的副本数、打印的起始页和终止页,还可以选择是否需要重复打印 以及打印输出的途径。 (6) ReportTitle 该属性在标题的边条中显示标题,但通常要由TQRSysData组件来设置报表的标题。 (7) ShowProgress 该属性可以在准备和打印报表期间显示一个过程对话框。
DELPHI报表制作技巧20篇

Delphi 3 中报表的制作
Borland Delphi 是当今优秀的 Windows 可视化开发工具之一,今年 5 月份推出的 Delphi3 是一个真正的 32 位开发平台, 比 Delphi2 增加了不少定制控件。Delphi 3 没有捆绑 ReportSmith 报表制作工具,但同时增加了 Qreport 组中报表制作控件 的功能,使制作报表更加方便灵活。在 Delphi3 中除了可以采用 Qreport 组中报表制作控件来制作报表外,还可利用打印机画 布直接向打印机输出报表。下面将详细介绍这两种方法。 用打印机画布制作报表 Delphi 引进了画布的概念,使向打印机输出和向屏幕的输出具有相同的方法,直接向打印机的画布输出线条和字符串,即可制作 出任意规格的报表。首先,把支持打印机的 Printers 单元手工加到 uses 域里,然后在打印事件中调用 Tprinter 对象来制作报表。 下面我们来看一个实际例子。假设在当前 Form1 上有一按钮名为 Print-rep;在 Dialogs 控件组选取一 PrintDialog 控件加到 Form1 中,命名为 printdg1;在 Additional 控件组中选取一 StringGrid 控件加到 Form1 中,命名为 temsgrid1,设其网格为 10 行 10 列,并假 设已完成了在 temsgrid1 控件中显示一 10 行 10 列的数据库表数据的准备工作,然后在 Print—repClick 事件中打印报表。程序 示例如下: procedure TForm1.Print-repClick(Sender:Tobject);
var I,j,cp,ph,pw,w,h:integer; beginif printdg1.Execute then //打开打印对话框 begin for cp:=1 to printdg1.coter do begin orientation:=poPortrait; //设置纵向打印方式 title:=‘打印报表例子’;//打印任务标题
Delphi利用ReportMachine报表控件制作小计和总计报表

Delphi利⽤ReportMachine报表控件制作⼩计和总计报表最近在做⼀个Delphi的发货清单的打印程序,其中涉及到需要计算清单的⼩计和总计的功能,⽂字难以表达清楚,上图吧:报表第⼀页的⼩计计算当前页⾯的商品价格总和,总计⽬前和⼩计⼀样是计算截⽌到当前页⾯的所有商品的⾦额和,下图为最后⼀页:这下⼤家明⽩了吧,就是要实现这样的报表。
废话不多说了,开始讲解我的思路:1.既然要计算⼩计,就是每页的⾦额和了,加⼊ReportMachine的计算⽂本框(TRMCalcMemoView),然后设置要汇总的字段值为数据字段“factSum”,然后选择计算⽂本框的属性⾯板中的“CalcOptions”选中“统计Brand”为要汇总的主项数据,统计类型为“合计(Sum)”,如图所⽰:2.最难的部分就是总计的计算,这不能简单的⽤计算⽂本框就能解决的,于是不得不⽤ReportMachine 的代码来处理,也就是在总计的⽂本框的OnBeforePrint事件中计算之前的⼩计⽂本框的值的和,然后赋值给总计⽂本框显⽰,先看下设计的报表:红⾊⽂字为两项总计的⽂本框的Name属性值。
下⾯是ReportMachine中⾃定义的OnBeforePrint事件函数代码如下:unit Report;varlValue,tValue: Double;//lValue=⾦额总计 tValue=税额总计procedure Memo1_OnBeforePrint(Sender: TObject);beginlValue:=lValue+CalcMemo1.CalcValue; //CalcMemo1为⾦额⼩计的⽂本框 TRMMemoView(Sender).Memo.Text := lValue; end;procedure Memo40_OnBeforePrint(Sender: TObject);begintValue:=tValue+CalcMemo2.CalcValue;//CalcMemo2为税额⼩计的⽂本框 TRMMemoView(Sender).Memo.Text := tValue; end;procedure Main;beginMemo1.OnBeforePrint:= Memo1_OnBeforePrint; //指定⾦额总计的⽂本框的OnBeforePrint事件的处理函数Memo40.OnBeforePrint:= Memo40_OnBeforePrint;//指定税额总计的⽂本框的OnBeforePrint事件的处理函数end;end.上⾯的代码先声明了两个事件函数⽤于计算两个累加的总计的值,然后赋值给相应的总计⽂本框;然后再Main中指定给总计⽂本框的事件,这样当打印总计之前先汇总赋值并打印。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 12 章
报表和图表设计
12.1 数据报表的设计
1.设计数据源 1.设计数据源
Form1→Table1→Button1 DBDEMOS Parts.DB RvDataSetConnection组件 Rave卡 组件( RvDataSetConnection组件(Rave卡) DataSet:Table1 RuntimeVisibility:rtDeveloper
2.设计Rave报表 2.设计Rave报表 设计Rave
(1)…….(15) .(15) (1) P295-298 P295-
3.编写程序代码及运行结果 3.编写程序代码及运行结果
Procedure TForm1.Button1Click(Sender:Tobject); begin RvProject1.Execute; end;
[例12-2]简单统计表 12-2] 组件 该组件用于显示与数据相对应的图形。 该组件用于显示与数据相对应的图形。数据来自于 DecisionSource 通过【 Graph】 通过【Editing Decision Graph】→Chart →Series 用来选择不同的图形。 用来选择不同的图形。 (6)DecisionGrid 组件 (6)DecisionGrid DecisionGraph组件不同的是该组件以表格形式对数 与DecisionGraph组件不同的是该组件以表格形式对数 据进行统计显示,可以根据需要设计表格的外观。 据进行统计显示,可以根据需要设计表格的外观。
12.2 图表设计
1.简单统计图生成 1.简单统计图生成
[例12-1]简单统计图的设计 12-1]简单统计图的设计
2.统计组件的介绍 2.统计组件的介绍 (1)DecisionQuery 组件 (1)DecisionQuery 该组件与Query组件相似, SQL语句 Query组件相似 语句。 该组件与Query组件相似,是SQL语句。 (2)DecisionCube 组件 该组件用来分析数据库表中的字段, 该组件用来分析数据库表中的字段,任何数据库表都可 以作为它的数据源,但一般都用DecisionQuery DecisionQuery查询结 以作为它的数据源,但一般都用DecisionQuery查询结 果作为它的数据源。 果作为它的数据源。 (3)DecisionPivot 组件 该组件与DBNavigator组件相似,用于导航不同的统计图。 DBNavigator组件相似 该组件与DBNavigator组件相似,用于导航不同的统计图。 (4)DecisionSource 组件 该组件与DataSource组件相似, DataSource组件相似 该组件与DataSource组件相似,起到连接数据集和数据 控制组件的作用。 控制组件的作用。